Servicestack-将多个POCO映射到一个表的可能性

时间:2019-02-27 21:29:43

标签: servicestack ormlite-servicestack

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

是否有可能以一种干净的方式执行此操作,而不会“破坏”表创建过程?

1 个答案:

答案 0 :(得分:2)

一般来说,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],以便所有Update / Select / Insert引用相同的表,例如:

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之前使用自动映射将单个表映射到其他类的好处。