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的情况下进行配置?
不幸的是,这个版本没有包含在 Code First 中添加自定义约定的功能:
http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-release-candidate-available.aspx
如果您不想使用流畅的 API 来配置列名称(我不会责怪您),那么最直接的方法可能是使用sp_rename。
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |