我有以下问题:我有一个使用继承的实体层次结构。我在两个子实体中有两个相同的字段(名称和类型相同)。当我尝试在项目上"更新数据库-强制"时,EF5抱怨已经有一个名为X.的列
EF5生成表的方式是,它实际上生成一个表,并将基础实体的所有字段加上派生实体的所有域放在那里。
是否有一种方法可以强制使用不同于属性名称的数据库列名。还有其他解决方案吗(我知道复制数据可能是架构问题,但将其通用化会引入我不想使用的更复杂的数据库层次结构)。
感谢:)
这可以通过以下两种方式之一完成,即在类属性上使用Fluent API或属性属性。
[Column("ColumnName")]
public string PropertyName
{
get;
set;
}
有关列属性的更多详细信息,请参阅MSDN-ColumnAttribute类。
否则,请使用Fluent API。在你的上下文类-
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<YourClass>().Property(yc => yc.PropertyName).HasColumnName("ColumnName");
有关此方法的详细信息,请参阅MSDN-HasColumnName扩展方法。
Baximilian链接的文章将有助于了解更多关于这方面的信息。
如果我理解正确,您需要在DB中更改字段的列名,这样您就可以使用ColumnAttribute了。
您可以在这里找到更多信息