【问题标题】:Table relationships in LINQ to SQLLINQ to SQL 中的表关系
【发布时间】:2009-11-08 21:22:08
【问题描述】:

假设我有两个表,A 和 B。表 A 有一个名为 A_ID 的 int 类型的主键,表 B 有一个名为 A_ID 的外键。

当我将这两个表添加到 LINQ to SQL 数据上下文类时,它会正确创建类以及它们之间的关联。

我的问题是,B 类将有一个名为 A_ID 的 int 类型的属性。它还将具有 A 类型的 A 属性。

现在,如果在运行时,我调用 LINQ to SQL 来填充 B 的实例,B.A_ID 和 B.A.A_ID 将是相同的值。是什么阻止了开发人员犯一些错误并在 B.A_ID 中设置与 B.A.A_ID 中不同的值?

在数据库中,由于外键约束,您无法执行此操作,但是 LINQ to SQL 类如何在客户端强制执行这些约束?

【问题讨论】:

    标签: linq-to-sql foreign-keys


    【解决方案1】:

    LINQ to SQL,当附加到关系数据库时,实际上只是为您构建 SQL,因此如果您在数据库中执行非法操作(例如违反外键约束),真正阻止您的是数据库,而不是 LINQ本身。 LINQ to SQL 本身的约束只是从数据库中检索出来的。

    因此,除非您正在谈论将其附加到 XML 段或类似内容(而且我不认为您的问题暗示了这一点),否则 LINQ 本身并没有强制执行任何内容。它实际上只是一个非常复杂的代码编写器。

    编辑:我说过 LINQ to SQL 只是一个代码编写器,但我应该注意,让您使用强类型等的元数据很好。我并不是要贬低产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2023-04-06
      • 2023-04-05
      相关资源
      最近更新 更多