【问题标题】:Servicestack - possibility of mapping several POCO to one tableServicestack - 将多个 POCO 映射到一个表的可能性
【发布时间】:2019-02-28 06:02:16
【问题描述】:

我正在寻找一种将多个 POCO 对象映射到 ServiceStack 中的单个表的方法。

是否有可能以一种干净的方式做到这一点,而无需“破解”表创建过程?

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:

    一般来说,In OrmLite: 1 Class = 1 Table

    但我不清楚你的意思是我的“将几个 POCO 对象映射到单个表中”,这听起来像是使用 Auto Mapping 填充具有多个 POCO 实例的表,例如:

    var row = db.SingleById<Table>(id);
    row.PopulateWithNonDefaultValues(instance1);
    row.PopulateWithNonDefaultValues(instance2);
    db.Update(row);
    

    如果您需要维护单个表并且有其他“子”类在通用表中维护不同的表,您可以使用[Alias],以便所有更新/选择/插入引用同一个表,例如:

    public class Poco
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    [Alias(nameof(Poco))]
    public class PocoName
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    [Alias(nameof(Poco))]
    public class PocoAge
    {
        public int Id { get; set; }
        public int Age { get; set; }
    }
    

    虽然在 OrmLite 中使用它之前,我并没有真正看到使用 AutoMapping 将其他类映射到的单个表的好处。

    【讨论】:

    • 好的,这听起来很明智但是问题是首先从不同的类中创建表
    • 我需要一个包含所有属性的大类 + 几个较小的 dto 来更新表的某些部分。
    • @A.D.我已经用别名示例更新了我的答案,但我不明白为什么不能只使用自动映射将 DTO 映射回单个数据模型类。
    • @A.D.您将拥有包含所有属性的统一类,并且只创建一次。其他具有别名的类本质上是较大目标类的“视图”。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2014-03-31
    • 2014-12-12
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多