C# linq到sql通过多个ID字段链接对象

C# linq到sql通过多个ID字段链接对象,c#,linq-to-sql,C#,Linq To Sql,我在一个项目上工作,这个项目几乎是一个调试经理,我似乎不知道如何在linq和sql中正确链接Items表 我有一个包详细信息表,其中包括 Items表(实际上是一个数据库视图,它来自不同的数据库,在这个应用程序中是只读的)也有这3个字段,但是当我添加与这3个字段的关联时,它不会将其添加为PackageDetail类的属性对象 我是不是做错了什么?所有我做的单键都很好…是否已将这些ID字段标记为主键?确保将必要的列指定为主键,这样应该可以正常工作。希望它有助于确保使用主键和外键关系正确设置键。如果

我在一个项目上工作,这个项目几乎是一个调试经理,我似乎不知道如何在linq和sql中正确链接Items表

我有一个包详细信息表,其中包括

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


我是不是做错了什么?所有我做的单键都很好…

是否已将这些ID字段标记为主键?确保将必要的列指定为主键,这样应该可以正常工作。希望它有助于确保使用主键和外键关系正确设置键。如果这仍然不起作用,您可以考虑添加一个新的键列,而不是依赖于复合键?

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

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


建议您尝试自己创建元素,并尝试将此键设置为csv列列表。OtherKey属性可能也很有趣。

我认为Linq to SQL不能正确地建模与复合键的关联:

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


看起来您可以只使用ItemId而忽略其他2个,因为这是最具体的限定词-换句话说,部门和类别完全由ItemId决定。

您是指这样的查询吗

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;

不,我指的是linq到sql的关联,第二个表实际上是一个视图而不是一个表。
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;