C# 实体框架列属性为';不要改名

C# 实体框架列属性为';不要改名,c#,entity-framework,C#,Entity Framework,因此,我有一个对象列表,它使用了EF的非常规名称,在该对象中,我定义了一个对保存该列表的上层对象的引用。在我看到它为我生成的名称之前,一切都很顺利,我尝试使用[Column]属性更改它,但失败了 代码: 生成的代码: public override void Up() { AddColumn("dbo.AspNetUsers", "CompanyFK_CompanyPK", c => c.Int()); CreateIndex("dbo.AspNetUser

因此,我有一个对象列表,它使用了EF的非常规名称,在该对象中,我定义了一个对保存该列表的上层对象的引用。在我看到它为我生成的名称之前,一切都很顺利,我尝试使用
[Column]
属性更改它,但失败了

代码:

生成的代码:

public override void Up()
  {
       AddColumn("dbo.AspNetUsers", "CompanyFK_CompanyPK", c => c.Int());
       CreateIndex("dbo.AspNetUsers", "CompanyFK_CompanyPK");
       AddForeignKey("dbo.AspNetUsers", "CompanyFK_CompanyPK", "dbo.Company", "CompanyPK");
  }
在对AddColumn()的调用中,您正在添加一个名为“CompanyFK\u CompanyPK”的列

如果希望字段名为“CompanyFK”(与属性名类似),则将调用更改为AddColumn to

   AddColumn("dbo.AspNetUsers", "CompanyFK", c => c.Int());

现在,您的属性将与列名匹配,因此您可以删除[column]属性。

使用model builder自定义映射,如下所示:

我希望有帮助


Juan

Column属性更改类属性和表列之间的映射。它不会重命名数据库中的现有列

首先使用代码将允许创建新表,但默认情况下,它不会修改您已经创建的DB对象


因此,如果您使用的是现有表,则需要自己重命名该列或编写迁移代码。

“失败”与“如何”一样?请发布错误/异常详细信息。不要失败,更像它不工作。从生成的代码中可以看出,
AddColumn
将生成一个与我看到的不同的名称。您确定要在AddColumn方法中添加正确的列名吗?column属性不在导航属性上。我希望在数据库中将列命名为CompanyFK。我只想离开实体一天剩下的时间框架。这让我很恼火,像创建一个带有自定义名称的1:M链接这样简单的东西是行不通的。今天我要做一些其他的事情,稍后我会再讨论这个问题,你的答案看起来是正确的,我会在休息后把它标记为正确的。好的。当你有这种感觉时,休息一下是个好主意。我们都经历过这个过程-我相信你会找到答案的。@BaileyMiller-运气好吗?我确实经历过很多垃圾,但我最终清除了我的数据库,我正在使用Fluent Api慢慢地重建它,因为它允许我做我想要的更改。
   AddColumn("dbo.AspNetUsers", "CompanyFK", c => c.Int());