LINQ to SQL Lookup表?或许加入?我迷路了... ;/

时间:2009-06-09 11:45:03

标签: linq linq-to-sql

不确定这是否称为查找表...以下是架构的屏幕截图:http://apoads.com/db-schema.png

我想要做的是加入AdBa和MilBase表,其中MilBase.BaseID是给定值。在结果中,我希望能够像这样访问数据:ad.MilBase.BaseName等...

我现在似乎无法绕过这个问题......; /

1 个答案:

答案 0 :(得分:1)

您的问题是您的架构具有Ad和MilBase之间多对多关系的语义,因此您希望在LINQ中执行此操作的真正期望方式是ad.Milbases,它将持有Milbases的收集。

LINQ To SQL不直接支持多对多关系,实际上(假设您的查找表只定义了一对一或一对一),问题就没有了。许多关系)你必须做类似

的事情
ad.Adbases.Single().MilBase

当然假设总会有一个 - 如果情况并非如此,那么你面前会有更复杂的事情。

当然,加入也总是可行的 - 无论哪种方式 - 如果这不是您所寻找的信息,您能澄清Ad和Milbase之间的关系吗? (多对多,等等?)。另外 - 如果这不是多对多的,你可以这样做,我真的会把它改成Milbase或Ad表中的外键。

编辑:回应你的评论,

您可以执行类似

的操作
var query = from a in db.ad
            select new {
               a.property1,
               a.property2,
               ...
               Milbases = a.Adbases.Select(s => s.Milbase)
            };

显然代码不会编译,但它应该给你一个粗略的想法 - 我也确定它可以以更好的方式完成,但是这样的东西应该有效。