LINQ:与内连接一起使用的关联无法正常运行

时间:2009-10-15 11:42:28

标签: c# linq linq-to-sql associations inner-join

任何人都可以提供帮助,我使用linq2sql非常成功地使用我的关联(外键)来提供内连接等...

例如这个,效果很好,颜色存储在一个名为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
}

问题是我试图链接的价格,所以房子有一个Association to StructureGroup,它与StructureGroupTariffs有关联,但我没有得到任何更多的选择..

将StuctureGroup链接到关税的链接表中的StructureGroupTariffs,

我实际上在这里用Linq中的链接表进行了测试,它确实有效!像这样

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

所以我有点困惑,为什么(见上文)这个

        Price = v.StructureGroup.StructureGroupTariffs.

只返回Any,All等方法,但不返回关联....

任何人都可以帮忙吗

1 个答案:

答案 0 :(得分:2)

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

修改

我怀疑你的House表有一个StructureGroup,并且有一个Tariffs表,中间是一个StructureGroupTariffs表,它保存对每个其他表的FK引用,允许每个结构组有很多关税(无论是否实际上有很多关税)。因此Linq使用EntitySet来引用StructureGroupTariffs。