【问题标题】:Entity Framework: Does the name of the identity field in my database matter?实体框架:我的数据库中身份字段的名称是否重要?
【发布时间】:2013-12-18 17:04:49
【问题描述】:

我是实体框架的新手,学习缓慢。我已经搜索了这个答案,但没有找到答案。假设我有以下表定义:

Products
-----------
ProdID (PK, identity field)
ProdName
ProdSKU

身份字段可以命名为“ProdID”还是需要说“ID”?我团队中的另一位开发人员告诉我,它必须被称为“ID”,否则实体框架将不起作用,但这对我来说毫无意义。欢迎任何建议。

【问题讨论】:

  • ID是默认的,也是SQL的通用约定。
  • “不会工作”是错误的 - 它只需要一些额外的设置。
  • @Maess:关于ID 的通用约定的相当有争议的声明。许多人/书称它为反模式......
  • 无论某些作者怎么想,我都坚持这是共同的约定。对/错与常见约定不同。见:stackoverflow.com/questions/1369593/…

标签: sql sql-server vb.net entity-framework


【解决方案1】:

它们是 EF 中的命名约定(当然是代码优先)

如果您将其称为 Id<NameOfEntity>Id(在您的情况下为 ProductsId),它将被“自动检测”为 PK。

如果您不遵守约定,则必须告诉 EF 这是 PK。

使用属性 ([Key]) 或 fluent api (modelBuilder.Entity<Products>().HasKey(t => t.ProdID);)。

所以不要相信其他开发者(我是开发者)。

【讨论】:

  • 只有在你先写代码的情况下才这样吗?如果先做数​​据库,不管叫什么都应该得到PK吧?
  • @simonatrcl 当然。在某些情况下,您必须帮助 EF 找到正确的 PK(例如视图),但这是不同的。
  • @simonatrcl:EDMX 模型将检查表并找到主键约束并使用它来确定主键 - 它可以命名为您喜欢的任何名称
  • 谢谢你们俩。我很确定,但得到确认是件好事。
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2013-01-15
相关资源
最近更新 更多