我正在使用 EF 代码优先方法。我开始制作映射文件(我来自 nihbernate 背景),但发现你真的不需要它们,除非你需要做一些更改。
我想知道我的 ID 的命名约定将使用什么?
那将会Product_Id
or ProductId
?
Edit
根据到目前为止的评论,这让我有点困惑。我之所以这么问,是因为我添加了 2 个新类(即表)并将它们连接起来并重新创建了我的数据库。
我的表中与新表有关系的两个 FK 都有“Product_Id”,我想可能是因为我没有它的映射。
我刚刚尝试使用映射和同样的问题。
所有其他表关系均采用驼峰大写形式。
Edit 2
嗯,发生了一些奇怪的事情,它在我的表中有两次同名。一旦它将其视为 FK,另一次则将其视为普通列。
Edit 3
想通了,说出来并在这里发帖帮助我隔离了问题。原因是因为我正在做 poco 方式
public Product Product {get; set;}
public Guid ProductId { get; set; }
我现在发布了我设置为 int 类型的 ProductId,所以发生的情况是它会在数据库中生成一个名为 ProductId 的列,然后当它有时间创建 FK 时,它不能再使用 ProductId,而必须使用 Product_Id
您可以使用ProductId
or Id
并且它将被实体框架的命名约定识别为您的主键。
如果您想打破惯例,也可以使用关键数据注释。
[Key]
public int Product_Id {get;set;} //Note the underscore
您还可以使用 Fluent API:
modelBuilder.Entity<Product>().HasKey(t => t.Product_Id); //Breaking convention again!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)