设置linq到sql上下文

时间:2014-02-17 15:31:44

标签: c# sql linq

我试图避免3部分连接,我想直接到我的第3个表名,但我是linq to sql的新手,我不知道我需要如何设置一切正常工作。我正在做但不想做的一个例子是:

from x in currentLogs
join y in cDataContext.CategoryCountryCategoryTypeMappings
on x.CategoryCountryCategoryTypeMappingID equals y.CategoryCountryCategoryTypeMappingID
join cat in cDataContext.Categories
on y.CategoryID equals cat.CategoryID
where x.Response != 0 && cat.StorefrontID==storeID
select x).Count();

我想做的是:

from x in currentLogs
join y in cDataContext.Categories
on x.CategoryCountryCategoryTypeMappingID equals y.CategoryCountryCategoryTypeMapping.CategoryCountryCategoryTypeMappingID
where x.Response != 0 && y.StorefrontID==storeID
select x).Count();

时出错
cat.CategoryCountryCategoryTypeMapping.CategoryCountryCategoryTypeMappingID

由我自动生成的dbml返回,Sequence是多个实体。

我的布局如下:DataContext

DownloadLog to cccmapping是一对一的,其他一切都是一对一的。我可能会把它搞砸了,但是downloadlog记录了一个cccMapping,其中cccmapping具有country类别和categorytypes的排列,每个排列都是唯一的。不确定是否使映射表成为一对一,或一对多。以太方式我是否设置了我的上下文来做我想做的事情?

1 个答案:

答案 0 :(得分:0)

根据您的设置,您似乎可以使用导航属性。所以沿着这些方向应该有用。

currentLogs
    .Where(log => log.Response != 0 && 
        log.CategoryCountryCategoryTypeMappings
            .Any(map => map.Categories
                .Any(cat => cat.StoreFrontID == storeID))).Count();