我已经开始使用Entity框架了,效果很好。我决定创建这样的继承模型....
public class tlkpCafe : EntityAddress
{
[Key]
public int CafeId { get; set; }
[Required]
public string Cafe { get; set; }
[EmailAddress]
public string Email { get; set; }
[StringLength(100)]
public string Facebook { get; set; }
[Url]
[StringLength(200)]
public string URL { get; set; }
[DataType(DataType.DateTime)]
public DateTime DateCreated { get; set; }
[DataType(DataType.DateTime)]
public DateTime DateModified { get; set; }
}
所以咖啡馆有一个单独的“实体地址”类,包含完整的地址,邮政编码等。
这很完美。但是,Ef决定使用一个单独的表来完成这个。它将使用额外的“Discriminator”列映射“实体地址”,以确定该地址属于哪个表。
我的问题是,是否可以存储为平面表,所以一切都还在'tlkpCafe'中?
我认为流畅的API有一些映射指令来执行此操作我无法找到可能实现此目的的代码。
答案 0 :(得分:0)
在我看来,您的EntityAddress类只是一组要包含在某些实体中而不是实体继承层次结构的字段。
所以我会把答案分成两部分:
如果我的假设是真的,那么如果你没有将类EntityAddress映射到DbContext(不要声明任何DbSet或该实体的任何配置),那么EF赢了'为这个类创建任何单独的表,但只是将这些字段添加到tlkpCafe表。这是因为您没有声明任何层次结构,并且DbContext不了解EntityAddress类。
如果您确实需要实体层次结构,那么您应该查看每种类型的表(TPT)与每个层次结构的表(TPH)配置here。您正在寻找的是TPH,但考虑到您将从继承自EntityAddress的所有实体获得一个表