我刚刚安装了新的 Entity Framework 4.1 NuGet 包,因此EFCodeFirst
根据 NuGet 指令和 Scott Hanselman 的这篇文章替换了该包。
现在,想象以下模型:
public class User
{
[Key]
public string UserName { get; set; }
// whatever
}
public class UserThing
{
public int ID { get; set; }
public virtual User User { get; set; }
// whatever
}
最后一个 EFCodeFirst 版本在UserThing
名为UserUserName
.
安装新版本并运行后,出现以下错误:
Invalid column name 'User_UserName'
这当然意味着新版本有不同的 FK 命名策略。这在所有其他表和列中是一致的:任何名为AnyOldForeignKeyID
EF 4.1 的 FK EFCodeFirst 想要调用AnyOldForeignKey_ID
(注意下划线)。
我不介意用下划线命名 FK,但在这种情况下,这意味着必须要么不必要地丢弃数据库并重新创建它,要么不必要地重命名 al FK。
有谁知道为什么 FK 命名约定发生了变化,以及是否可以在不使用 Fluent API 的情况下对其进行配置?