【发布时间】:2016-03-26 14:23:29
【问题描述】:
我正在使用 Entity Framework 6 和 TPC 继承策略
每个实体的基类如下:
public class MainObj : IdentifiedModel
{
public int Status
{
get;
set;
}
public string OType
{
get;
set;
}
public DateTime Date { get; set; }
}
这是我的模型创建代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("User");
});
modelBuilder.Entity<Entity2>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Entity2");
});
modelBuilder.Entity<Entity3>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Entity3");
});
modelBuilder.Entity<Entity4>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Entity4");
});
base.OnModelCreating(modelBuilder);
}
如您所见,我正在映射每个实体及其名称,并且我有 200 个实体。有没有更简单的方法来做到这一点?
【问题讨论】:
-
拥有这么多实体,TPC 不是正确的方法。使用基类并分别映射每个实体。
-
所有这些类的基类是什么?
-
@AlbertoMonteiro 我添加了基类,请参阅我的编辑
-
@brtb 如果你把这个类抽象化,你就不需要使用这个配置了,会容易很多。你需要把 MainObj 变成一张桌子吗?
-
IMO,如果我发现自己正在考虑 200 个子类(表),我可能会重新考虑数据模型。
标签: c# entity-framework inheritance database-design