关闭数据读取器时调用“读取”不是实体框架中的有效操作

问题描述 投票:0回答:1

我在Windows应用程序C#中使用Entity Framework,尝试使用DbContext从两个实体中检索数据,并希望进行简单连接,但我的代码细分(在var modellst行)。我的示例代码如下

        using (var ctx = new DbEntities())
        {

            var lst = ctx.AUMaterials.Where(o => o.ServiceRequestTypeId == serviceReqId && o.SSStock.Quantity > 0).ToList();
            var modellst = ctx.AUModelMaterials.Where(o => o.ModelId == modelId).ToList();

            // here i want to make join on these two list
        }

这里首先列出AUMaterials实体中的数千条记录。我认为加载需要很长时间。在AUModelMaterials实体中也是如此,这里也有数千条记录。但是相同的代码在早期阶段工作正常。

c# .net entity-framework linq dbcontext
1个回答
1
投票
 var results = (from t1 in context.AUMaterials
                      join t2 in context.AUModelMaterials
                      on  t1.Col1 equals t2.Col1
                      where t1.ServiceRequestTypeId == serviceReqId && t1.SSStock.Quantity > 0 && t2.ModelId == modelId
                      select new { t1, t2}).ToList();  

Joining在多个列上

 var results = (from t1 in context.AUMaterials
                      join t2 in context.AUModelMaterials
                      on new {t1.Col1, t1.Col2, t1.Col3 } equals
                          new { t2.Col1, t2.Col2, t2.Col3 }
                      where t1.ServiceRequestTypeId == serviceReqId && t1.SSStock.Quantity > 0 && t2.ModelId == modelId
                      select new { t1, t2}).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.