Linq和DB关系

时间:2009-05-26 18:23:40

标签: .net sql-server linq-to-sql

在这里快速提问。

我正在使用一个较旧的数据库,该数据库没有任何关系,我现在正试图尽可能保持一致。

我移植的代码有一些怪癖导致某些情况下我无法强制执行关系(PK< - > FK)。我想知道这种强制关系是否是Linq to SQL的要求?

thx求助:)


我评论了其中一个可能的答案......

这个问题要简单得多:

linq是否允许在没有强制执行一致性的关系上获取数据? 我不是在谈论添加更多道具......

这意味着我认为DO具有正确的PK< - > FK关系的值的功能(正如我所说,我没有测试过这个,也许你们有些人有?)。这会对不存在的价值做些什么呢?提出空引用?

2 个答案:

答案 0 :(得分:2)

自动生成的LINQ to SQL类(位于dbml下面的.cs文件中)为partial,因此您可以根据需要添加其他属性和功能。

LINQ使用SQL中的显式关系来添加属性 - 例如,如果您有Customers表和具有显式关系的Orders表,LINQ将能够将强类型Orders集合作为属性放在客户对象。没有它,它只能在Order对象上放置CustomerID(int或其他)。

如果没有显式关系,您可以手动将属性和属性修饰添加到自动生成的实体类中。我强烈建议尽可能多地在部分类中使用,这样如果重新生成实体类,则不会丢失更改。

答案 1 :(得分:0)

DB中的关系不是必需的。设计者使用它来推断您自动获得的“属性”关系,但您可以添加自己的关系,并指出哪些标量属性标识两个表中的关系。 (右键单击设计器,选择“添加关系”并标识表和列,或使用“关系”工具拖放)

但要小心。如果您的问题是应用程序存储“占位符值”以标识“无关系”(如主键表中没有对应的零值),如果您尝试访问相应的成员,则最终可能会引发异常代码。

如果问题是原始应用程序以错误的顺序存储东西(因此阻止您强制执行FK约束),但是当完成所有操作后您拥有一致的数据时,那么您应该没有问题。