我使用EF代码优先的方法。我开始制作映射文件(我来自nihbernate背景),但发现除非你需要做一些更改,否则你真的不需要它们。
我想知道它会用什么来命名我的Id?
是Product_Id
还是ProductId
?
编辑
根据目前的评论,这让我有点困惑。我之所以这么问,是因为我添加了两个新类(即表),并将它们连接起来,重新创建了我的数据库。
我的表中与我的新表有关系的两个FK都有"Product_Id",我想这可能是因为我没有映射。
我只是尝试使用映射和相同的问题。
所有其他表关系都具有Camel大写。
编辑2
嗯,发生了一些奇怪的事情——在我的桌子上有两次相同的名字。一旦它将其视为FK,另一次它将其仅视为常规列。
编辑3
弄清楚了,说出来并在这里发帖帮助我隔离这个问题。原因是我在做poco方式
public Product Product {get; set;}
public Guid ProductId { get; set; }
我现在发布了我设置为int类型的ProductId,所以它会在数据库中生成一个名为ProductId的列,然后当它有时间制作FK时,它就不能再使用ProductId了,必须使用Product_Id
您可以使用ProductId
或Id
,它将被实体框架的命名约定识别为主键。
如果您想打破惯例,也可以使用密钥数据注释。
[Key]
public int Product_Id {get;set;} //Note the underscore
您也可以使用Fluent API:
modelBuilder.Entity<Product>().HasKey(t => t.Product_Id); //Breaking convention again!
默认情况下,IdKeyDiscoveryConvention
已注册,并根据其文档:
主键检测不区分大小写。公认的命名模式按优先顺序为:
"识别"
[类型名称]Id