MVC4代码首先强制数据库列名



我有以下问题:我有一个使用继承的实体层次结构。我在两个子实体中有两个相同的字段(名称和类型相同)。当我尝试在项目上"更新数据库-强制"时,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了。

您可以在这里找到更多信息

最新更新