【发布时间】:2012-11-03 17:37:48
【问题描述】:
我有一个与 Model 关联的 Vehicle,Model 与 Make 有关联。
-
这是我的通用存储库,与我的项目中的 LazyLoadingEnabled = false 关联:
public IQueryable<T> IncludeMultiple<T1>(params Expression<Func<T, object>>[] associations) where T1 : class { var source = (IQueryable<T>)DbContext.Set<T>(); if (associations != null) { foreach (Expression<Func<T, object>> path in associations) source = DbExtensions.Include<T, object>(source, path); } return source; } -
在我的 api 控制器中,我使用的是工作单元模式。这是我的 GetAll 方法:
public IEnumerable<Vehicle> GetAll() { var vehicles = Uow.VehicleRepository.IncludeMultiple<Vehicle>(c => c.VehicleModel).ToList(); return vehicles; }
一切正常,Json 检索 Vehicle 类数据以及相关的 VehicleModel 类数据。
但是,Vehicle 与 VehicleMake 没有直接关联,只有 VehicleModel 有。现在,如果我的 GetAll 方法有这个:
public IEnumerable<Vehicle> GetAll()
{
var vehicles = Uow.VehicleRepository.IncludeMultiple<Vehicle>(c => c.VehicleModel, c => c.VehicleModel.VehicleMake).ToList();
return vehicles;
}
虽然我在调试中看到车辆确实具有车辆及其相关的 VehicleModel 和 VehicleMake 数据,但它在 Fiddler 中返回 Http 500 错误。
更新:
在 Vehicle 中添加了另一个名为“Test”的关联,GetAll 方法为:
(c => c.VehicleModel, c => c.Test)
没有错误,所有数据都是通过 fiddler 返回的。因此,“非直接关联”(即 Vehicle -> VehicleMake)似乎是导致错误的原因。
问题:
在没有收到 Http 500 错误的情况下,检索相关车辆数据及其关联类的数据并将其返回给 Json 的正确方法是什么?
【问题讨论】:
-
你不能调试它来找到抛出的精确异常吗? “Fiddler 中的 Http 500 错误”并不是最好的错误描述。
标签: entity-framework api repository-pattern unit-of-work