EF 4.1搞砸了.FK命名策略有变化吗?

Ser*_*eit 9 ef-code-first entity-framework-4.1

我刚刚安装了新的Entity Framework 4.1 NuGet包,因此EFCodeFirst根据NuGet intructions 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
}
Run Code Online (Sandbox Code Playgroud)

最后一个EFCodeFirst版本在UserThing名为的表中生成了一个外键UserUserName.

安装新版本并运行后,我收到以下错误:

Invalid column name 'User_UserName'
Run Code Online (Sandbox Code Playgroud)

这当然意味着新版本具有不同的FK命名策略.这在所有其他表和列中是一致的:无论名为AnyOldForeignKeyIDEF 4.1的FK EFCodeFirst 想要调用AnyOldForeignKey_ID(注意下划线).

我不介意用下划线命名FK,但在这种情况下,它意味着必须不必要地丢弃数据库并重新创建它或不必要地重命名al FK.

有没有人知道为什么FK命名约定已经改变,是否可以在不使用Fluent API的情况下进行配置?

Bri*_*all 3

不幸的是,这个版本没有包含在 Code First 中添加自定义约定的功能:

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-release-candidate-available.aspx

如果您不想使用流畅的 API 来配置列名称(我不会责怪您),那么最直接的方法可能是使用sp_rename