我的代码中有一个Cars对象的集合。
My Domain Layer类包含以下内容:
// Entity Framework backing field
private ReadOnlyCollection<Car> _cars;
public virtual ReadOnlyCollection<Car> Cars
{
get
{
AuditMethod(_cars);
return _cars;
}
private set { _cars = value; }
}
请注意,该属性标记为虚拟以允许延迟加载。在我的Web Layer中,我在Web Api中使用它,如果我想从我的特定车库返回所有的汽车,我可以这样做:
var cars = Garage.Cars;
一切都按预期工作,它们加载得很好。然而,由于在访问这样的属性时运行的AuditMethod,当特定车库中的汽车数量变高时,性能实际上正在下降。由于我只是在这个公开的Web API方法中返回数据而不担心触发审计信息,我的想法是在Domain层中编写一个方法,它只返回私有字段,如下所示:
public ReadOnlyCollection<Car> GetCarsForWebApi()
{
return _cars;
}
然后在Web API中,我尝试做类似的事情:
var cars = Garage.GetCarsForWebApi();
然而,当我突破这一行时,我总是没有数据返回。我假设这是因为此时数据不是延迟加载的。是否有一些我缺少的东西让这个工作?我也不想在我的域层中引用我的DAL层,所以我想避免使用.Include来编译db.Context,以便尽可能地加载数据?