使用Linq to SQL时使用多列(复合)主键是否有益?

时间:2009-03-15 02:26:04

标签: sql linq linq-to-sql

在使用Linq to SQL时,为多对多关系表使用多列(复合)主键是否有益?

或者我应该只添加一个标识列作为非群集主键并正确索引FK列?

2 个答案:

答案 0 :(得分:5)

不是LINQ问题。如果您的架构需要它们,请使用它们。如果你不这样做,不要。无论哪种方式,LINQ都可以很好地处理您的架构。

LINQ to SQL无法正常处理的一个区域是用于连接多对多关系的多列/键映射表,但我不会说这严重属于您的问题所针对的类别。您仍然可以在LINQ中的映射表上执行CRUD操作,但LINQ无法处理由多对多映射表提供的关系。 (LINQ适用于一对一和一对多表。)

我无法谈论实体框架的任何问题但是如果EF在多列/多键表中存在任何问题,我会非常惊讶。

答案 1 :(得分:0)

如果您的域中有多列复合键是有意义的,那么请使用一个。否则,使用通常的标识列作为代理主键。

编辑:这是一般建议,没有考虑使用LINQtoSQL实现的任何技术方面。这些可能是有意义的:

How to: Handle Composite Keys in Queries (LINQ to SQL)

LINQ To SQL Samples

Linq to SQL DTOs and composite objects