c# - 什么是 EF 默认 ID 命名约定代码优先?

标签 c# entity-framework

我正在使用 EF 代码优先方法。我开始制作映射文件(我来自 nihbernate 背景)但发现你真的不需要它们,除非你需要做一些改变。

我想知道它将用于我的 Id 的命名约定吗?

会不会Product_IdProductId ?

编辑

根据目前的评论,这让我有点困惑。我问是因为我添加了 2 个新类(即表)并将它们连接起来并重新创建了我的数据库。

我的表中与我的新表有关系的两个 FK 都有“Product_Id”,我想可能是因为我没有映射。

我只是尝试使用映射和同样的问题。

所有其他表关系都有驼峰大写。

编辑 2

嗯,发生了一些时髦的事情,它在我的 table 上有两次相同的名字。一次它把它当作一个 FK,另一次它把它当作一个普通的列。

编辑 3

想通了,说出来并在这里发帖帮助我隔离问题。原因是因为我在做 poco 的方式

public Product Product {get; set;}
   public Guid ProductId { get; set; }

我现在发布我设置为 int 类型的 ProductId 所以发生的事情是它会在数据库中生成一个名为 ProductId 的列,然后当它有时间制作 FK 时它不能再使用 ProductId 并且不得不使用 Product_Id

最佳答案

您可以使用 ProductIdId它将被 Entity Framework 的命名约定识别为您的主键。

如果您想打破惯例,也可以使用 Key 数据注释。

[Key]
public int Product_Id {get;set;} //Note the underscore

您还可以使用 Fluent API:
modelBuilder.Entity<Product>().HasKey(t => t.Product_Id); //Breaking convention again!

关于c# - 什么是 EF 默认 ID 命名约定代码优先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368367/

相关文章:

c# - 将对象连同静态成员变量序列化为 XML

c# - 谷歌浏览器选择的文本

C# 访问 64 位注册表

.net - EF4 + MVVM - 在 ViewModel 中公开实体?

c# - Entity Framework : Filtering navigation-property data

c# - EntityFramework 延迟加载不起作用

c# - 将图像保存在sql数据库中C#

c# - 你如何将预制的查询对象发送到 NEST?

c# - 如何动态构建表达式树以用于匿名类型

c# - Database.SqlQuery 和 EF 6.1 之间的性能有什么区别吗?