[英]Avoid include duplication in EF
我有兩個包含相同部分的方法(這些方法僅用於描述問題)
public Car GetCarByChildEntityId(long id)
{
var query = DataContext.AsQueryableFor<RTraining>()
.Where(rb => rb.Id == id)
.Include(rb => rb.Car.CarStatus)
.Include(rb => rb.Car.item.Customer)
.Include(rb => rb.Car.item.MyItem.Wheel.Customer);
return executeQuery(query).SingleOrDefault().Car;
}
public IEnumerable<IEntity> GetEntities()
{
var query = DataContext.AsQueryableFor<RTraining>()
.Include(rb => rb.Car.CarStatus)
.Include(rb => rb.Car.Item.Customer)
.Include(rb => rb.Car.Item.MyItem.Wheel.Customer);
return executeQuery(query);
}
這三個包括如何才能通用以避免代碼重復。
開發類似的方法:
private IQueryable<Car> getCommonQuery()
{
DataContext.AsQueryableFor<RTraining>()
.Include(rb => rb.Car.CarStatus)
.Include(rb => rb.Car.Item.Customer)
.Include(rb => rb.Car.Item.MyItem.Wheel.Customer);
}
public Car GetCarByChildEntityId(long id)
{
return executeQuery(getCommonQuery()).SingleOrDefault(rb => rb.Id == id).Car;
}
public IEnumerable<IEntity> GetEntities()
{
return executeQuery(getCommonQuery()).OfType<IEntity>();
}
注意:我對executeQuery方法一無所知,但是我認為我的代碼可以正常工作,請確保在使用Entity Framework探查器或SQL探查器之后一切正常
祝好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.