C# 避免在EF中包含重复

C# 避免在EF中包含重复,c#,.net,entity-framework,entity-framework-4,repository,C#,.net,Entity Framework,Entity Framework 4,Repository,我有两种包含部分相同的方法(这些方法仅用于描述问题) 公共汽车GetCarByChildEntityId(长id) { var query=DataContext.AsQueryableFor() .Where(rb=>rb.Id==Id) .Include(rb=>rb.Car.CarStatus) .Include(rb=>rb.Car.item.Customer) .Include(rb=>rb.Car.item.MyItem.Wheel.Customer); 返回executeQuery

我有两种包含部分相同的方法(这些方法仅用于描述问题)

公共汽车GetCarByChildEntityId(长id)
{
var query=DataContext.AsQueryableFor()
.Where(rb=>rb.Id==Id)
.Include(rb=>rb.Car.CarStatus)
.Include(rb=>rb.Car.item.Customer)
.Include(rb=>rb.Car.item.MyItem.Wheel.Customer);
返回executeQuery.SingleOrDefault().Car;
}
公共IEnumerable GetEntities()
{
var query=DataContext.AsQueryableFor()
.Include(rb=>rb.Car.CarStatus)
.Include(rb=>rb.Car.Item.Customer)
.Include(rb=>rb.Car.Item.MyItem.Wheel.Customer);
返回执行(查询);
}

这三个包含如何共同避免代码重复。

开发如下方法:

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>();
}
private IQueryable getCommonQuery()
{
DataContext.AsQueryableFor()
.Include(rb=>rb.Car.CarStatus)
.Include(rb=>rb.Car.Item.Customer)
.Include(rb=>rb.Car.Item.MyItem.Wheel.Customer);
}
公共汽车GetCarByChildEntityId(长id)
{
返回executeQuery(getCommonQuery()).SingleOrDefault(rb=>rb.Id==Id).Car;
}
公共IEnumerable GetEntities()
{
返回executeQuery(getCommonQuery())。类型为();
}
注意:我不知道executeQuery方法,但我认为我的代码可以工作,但要确保之后使用EntityFrameworkProfiler或SQL profiler确保一切正常

祝你好运

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>();
}