2013-12-14 59 views
0

我在我的web應用程序中使用VS12和實體框架。 用於從數據庫(sql server 2008 R2)中獲取數據的baseRepository,其中查詢上下文爲GetAll(),其中findBy,add,update,saveChanges,dispose和getById()。 使用此存儲庫進行交易。 在一種情況下,使用連接來獲取從三個不同實體過濾的數據。在使用lambda表達式的實體中加入查詢

任何一個可以給例如對於相同..

回答

0

我這種方式解決了這個問題,

using (var db = new KitRepository<ServiceLevel>()) 
      {    
       using (var kit = new KitRepository<Kit>()) 
       { 
        var kitServiceLevel = kit.Search(o => o.PatientId == patientId).Select(i => i.kitServiceLevelId).ToList(); 
        var temp = db.Where(o => o.HospitalMasterId == HospitalId && kitServiceLevel.Contains(o.ServiceLevelId) && o.IsEnabled == true).Select(i => i.TabletRequired).ToList(); 
        var entity = db.Search(l => temp.Contains(l.TabletRequired) && lstServiceType.Contains(l.ServiceCodeTypeEnumId)).ToList(); 

        var model = new List<ServiceLevelModel>(); 
        Mapper.Map(entity, model); 
        return model; 
       } 
      } 

如果任何一個優化的查詢

var kitServiceLevel = kit.Search(o => o.PatientId == patientId).Select(i => i.kitServiceLevelId).ToList(); 
         var temp = db.Where(o => o.HospitalMasterId == HospitalId && kitServiceLevel.Contains(o.ServiceLevelId) && o.IsEnabled == true).Select(i => i.TabletRequired).ToList(); 
         var entity = db.Search(l => temp.Contains(l.TabletRequired) && lstServiceType.Contains(l.ServiceCodeTypeEnumId)).ToList(); 

然後讓我知道。