【问题标题】:Edmx need Primary_Key?Edmx 需要 Primary_Key 吗?
【发布时间】:2013-12-18 10:12:39
【问题描述】:

在 .net 中创建 Edmx 时,在创建数据库的 Edmx 时仅添加具有主键的那些表和视图是一个问题。
这个问题很容易解决,但只是在表或视图中创建一个列主键,但我没有得到必要的实际原因??
谁能解释一下背后的原因?

【问题讨论】:

  • 它用于在您执行更新(或删除)时跟踪对象,这是 EF 识别对象的方式。
  • okkk @BenjaminGruenbaum 我明白了这是一个愚蠢的问题,但我永远不知道原因
  • 主键是一种唯一有效识别数据表中每一行的方式。无论如何,每个“真实”表总是应该有一个主键 - 这是一个众所周知的、被广泛接受的最佳实践。不要与之抗争——拥抱它!
  • 同意你@BenjaminGruenbaum
  • @BenjaminGruenbaum 可能存在审计表中没有主键的情况。这种情况的解决方法是什么?

标签: .net entity-framework primary-key edmx


【解决方案1】:

Entity Framework 需要一个主键来正确地将一条数据标识为在特定数据集中是唯一的。它归结为它如何在内部查找实体并为您提供可能的最佳性能。

例如,Entity Framework 的一个功能是更改跟踪,它将添加、删除、修改和未更改实体的集合保存在定义为Dictionary<EntityKey, EntityEntry> 的一系列集合中。为了能够有效地处理这些集合,它需要一个密钥来及时对这些集合执行必要的 CRUD 操作,因此,它需要那个密钥。

更新

还有一个用于无键对象的集合,但它被定义为Dictionary<object, EntityEntry>,它的查找性能很糟糕,因为需要强制转换键(或者如果键是值类型,则取消装箱)才能使其成为可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2010-11-28
    • 2013-02-13
    • 2011-02-25
    • 2010-12-17
    • 2012-02-09
    相关资源
    最近更新 更多