2009-11-08 59 views
0

假设我有两个表A和B.表A有一个名为A_ID类型为int的主键,而表B有一个名为A_ID的外键。LINQ to SQL中的表关系

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

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

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

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

回答

1

当连接到关系数据库时,LINQ to SQL实际上只是为您构建SQL,因此如果您在数据库中执行了某些非法操作(如违反外键约束),那么数据库确实会阻止您,而不是LINQ本身。 LINQ to SQL本身的限制只是从数据库中撤回。

所以,除非你在谈论它连接到一个XML片段或类似物(我没有看到你的问题建议),那么LINQ真不是其本身和执行任何东西。这真的只是一个非常复杂的编码器。

编辑:我说的LINQ to SQL只是一个codewriter,但我要指出的是,您可以使用强类型的元数据等是很好的。我并不是要贬低产品。