【发布时间】:2011-03-17 19:56:23
【问题描述】:
我刚刚安装了新的 Entity Framework 4.1 NuGet 包,因此按照 NuGet 指令替换了 EFCodeFirst 包和 this article of 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 版本在名为 UserUserName 的 UserThing 表中生成了一个外键。
安装新版本并运行后出现以下错误:
Invalid column name 'User_UserName'
这当然意味着新版本有不同的 FK 命名策略。这在所有其他表和列中是一致的:无论 FK EFCodeFirst 命名为 AnyOldForeignKeyID EF 4.1 想要调用 AnyOldForeignKey_ID(注意下划线)。
我不介意用下划线命名 FK,但在这种情况下,这意味着必须要么不必要地丢弃数据库并重新创建它,要么不必要地重命名所有 FK。
有人知道为什么 FK 命名约定发生了变化,以及是否可以在不使用 Fluent API 的情况下进行配置?
【问题讨论】:
标签: ef-code-first entity-framework-4.1