1

我的项目中有几个模型确实应该使用识别关系,但是出于速度和简单性的原因,我将它们设置为具有唯一的自动增量主键。例如,联系人中的电子邮件地址:

Public Class EmailAddress
    'This is currently the primary key
    Public Property EmailAddressID As Integer

    'These three properties really make a composite primary key in an identifying relationship with contacts
    Public Property ContactID As Integer
    Public Property Address As String
    Public Property Domain As String
End Class

我对此设置有两个问题:

  1. 在复合键中包含字段是否nvarchar真的会减慢数据库的速度,足以保证不使用它(因为我被引导相信学校)?
  2. 如果是 1,有没有办法(在数据注释或 Fluent API 中)通知 EF 这实际上是与人工主键的识别关系,从而获得好处(在标题“识别和非识别的注意事项”下关系”)?
4

1 回答 1

2
  1. 不。密钥是一种逻辑的、数据完整性的特性;性能取决于许多其他因素。

  2. 在关系模型和 SQL 中,标识关系和非标识关系之间的区别非常小或根本不重要。您可能会发现这些术语有助于理解概念模型,但它们并不是制定数据库设计决策的真正基础。您所指的所谓的“好处”本质上只是语法糖。

于 2012-08-30T21:38:00.763 回答