簡體   English   中英

避免在EF中包含重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM