2009-10-15 41 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