linq to sql通过多个ID字段链接对象

时间:2009-08-10 04:35:03

标签: c# linq-to-sql

我在工作的项目上工作,这几乎是一个调试管理器,我似乎无法弄清楚如何在linq中正确地将Items表链接到sql。

我有一个包详细信息表,其中包含(除其他外)

DepartmentID, CategoryID, ItemID

而Items表(实际上是来自不同数据库的数据库视图,并且只在此应用程序中读取)也有这3个字段,但是当我添加这3个字段的关联时,它不会将其添加为属性对象在PackageDetail类

我正在做这个协会的错误吗?所有单身的我都做得很好......

5 个答案:

答案 0 :(得分:3)

我不相信Linq-to-SQL可以正确建模与复合密钥的关联:

Is it beneficial to use multicolumn (composite) primary keys when using Linq to SQL?

但是,您仍然可以使用匿名对象作为(单个)密钥在Linq-to-SQL查询中加载具有组合键的对象:

http://msdn.microsoft.com/en-us/library/bb399391.aspx

答案 1 :(得分:1)

是否已将这些ID字段标记为主键?确保将必要的列指定为主键,这应该可以正常工作。希望它有所帮助

答案 2 :(得分:0)

确保使用主键和外键关系正确设置键。如果仍然无效,您是否可以考虑添加新的密钥列,而不是依赖于复合密钥?

LINQ to SQL的最后一个选项通常是使用XML编辑器手动更新DBML。正常的单键关系如下所示:

<Association Name="Schedule_Profile" Member="Schedule" ThisKey="ScheduleID" Type="Schedule" IsForeignKey="true" />

建议您尝试自己创建元素,并尝试将ThisKey设置为csv列列表。 OtherKey属性也可能是有意义的。

答案 3 :(得分:0)

看起来你可以只使用ItemId并忽略其他2,因为那是最具体的限定符 - 换句话说,部门和类别完全由itemId决定。

答案 4 :(得分:0)

您的意思是这样的查询。

var result = from table in dbContext.table1 join table2 in dbContext.table2 join new { table.DepartmentID, table.CategoryID, table.ItemID} equals new {table2.DepartmentID, table2.CategoryID, table2.ItemID}
select table;