关联的dbml表中缺少LINQ列

时间:2014-09-24 19:24:04

标签: c# sql linq

我手动在dbml设计器上创建了两个表之间的关联,用于1:多关系;两张桌子都有钥匙。当我使用Linq查询它们时,我可以看到子表是父对象的属性&我甚至可以获得该父级的子行数。我甚至看不到的是与子表关联的任何列。我想要做的只包括那些子行与某个过滤条件匹配的父行。

我已经在网上的几个地方看到了这个问题,但每个人都回答说,其中一个表上没有主键(我的两个都是这样)。我认为最简单的解释是图片,所以这里是:

dbml designer showing PalletMaster (parent), PalletJob (Child) with association and query missing child fields

请注意,RowSequence是设计师中PalletJob的一个属性,但在intellisense中没有显示。 正如我所提到的,我可以获得托盘作业的行数(pm.PalledtJobs.Count()。

谢谢!

我通过使用DataLoadOptions对象来指定子对象的过滤条件来解决问题。我还需要在主查询中添加一个测试,以排除没有子行的父行。

                System.Data.Linq.DataLoadOptions dlo = new System.Data.Linq.DataLoadOptions();
            dlo.AssociateWith<PalletMaster>(p => p.PalletJobs.Where(j => j.PartNumber.StartsWith("LS")));
            db.LoadOptions = dlo;
            var query = (from pm in db.PalletMasters
                         where pm.CreatedByUser.Contains(userFilter) &&
                          pm.PalletStatus.ToString() == "A" 
                          && pm.PalletJobs.Count() > 0 
                         orderby pm.PalletID descending
                         select pm).Skip(skipValue).Take(takeValue); 

1 个答案:

答案 0 :(得分:2)

这是一对多的关系,所以你得到一个ICollection<PalletJob>,而不是一个。