我在我的网络应用程序中使用VS12和实体框架。 使用baseRepository从数据库(sql server 2008 R2)获取数据,其中查询上下文是GetAll(),其中,findBy,add,update,saveChanges,dispose,getById()。 使用此存储库进行事务。 在一种情况下,使用join来获取从三个不同实体过滤的数据。
任何人都可以举例说明......
答案 0 :(得分:1)
我用这种方式解决了这个问题,
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();
然后告诉我。