2009-10-15 55 views
0

谁能帮助,我一直在用我的协会(外键)使用LINQ2SQL取得了巨大成功,以提供内部连接等等LINQ:关联不正常使用与innerjoins

例如这个,伟大工程,颜色存储在一个名为Color的表格中,它具有关联性,所以我通过Color.Description(非常棒)提取它。同为StructureType其实际的关联,所以我把它捡起来通过structureType协会和字段说明这是在StructureType表

 from v in Houses 
    select new 
    { 
     Id = v.Id, 
     Color = v.Color.Description, 
     StructureType= v.StructureType.Description, 
     Price = v.StructureGroup.StructureGroupTariffs. // doesn't provide anything more only Any, All etc 
} 

问题的存在是这个价格我试图链接,这样的房子有一个协会到StructureGroup具有关联StructureGroupTariffs,但我没有得到任何更多的选择..

StructureGroupTariffs在链接StuctureGroup关税的互连表,

我实际上联动表中的LINQ做了一个测试在这里它的工作原理!像这样

 from g in StructureGroupTariffs 
     select new 
     { 
      Price = g.Tariff.Price 
     } 

让我有点糊涂了,为什么(见上文)这个

 Price = v.StructureGroup.StructureGroupTariffs. 

只返回喜欢的任何方式,所有的等,但不是联想....

灿任何人请帮助

回答

2

StructureGroupTariffs是一个EntitySet而不是一个EntityRef,即它包含许多对象而不是一个对象。您无法将“许多”提取到您在查询中汇编的“单个”中。

编辑

我怀疑你家表有StructureGroup并且有一个关税表,两者之间是一种StructureGroupTariffs表保存到其他各个表允许有的FK引用是为每个许多关税结构组(不管实际上是否有很多关税)。因此Linq使用一个EntitySet来引用StructureGroupTariffs。

+0

感谢拉撒路,所以我有什么选择,是的,你是正确的我注意到(使用linqpad)它返回一个实体集。我必须做一个特定的连接,然后在LINQ中,使用某个地方或某物? 它是真正的获得单个记录我必须通过v.IdTariff和v.StructureGroupId,我有... 你能精心设计吗?如果我确实通过了这两个ID,我注意到在LINQ中,它只返回1条记录,但是当然没有这些记录,它将返回大约30 :-) – 2009-10-15 11:58:25

+0

是的,你完全正确的与你编辑的答案,这正是它的组织方式 – 2009-10-15 12:01:56

+0

小纠正对诉我有IdTariff但StuctureGroupId不在房屋它的StructureGroupTariff和关税,但林克不给我访问任何一张桌子上的关税ID,所以我不能包括在我的地方 – 2009-10-15 12:06:20