给定以下示例模型(它反映了我的实体框架实体,为简洁起见省略了属性):
public class Company
{
public string Name { get; set; }
public IList<Department> Departments { get; set; }
}
public class Department
{
public string Name { get; set; }
public IList<Employee> Employees { get; set; }
}
public class Employee
{
public string Name { get; set; }
}
我正在使用我的 Web UI 中的 WCF 数据服务来获取这些实体。我基本上追求的是一种最佳实践/更优雅的加载方式,每一个Company
都将有每一个响应,每Department
一个都将各自Employee
急切地加载。
目前我的代码看起来像这样:
var proxy = new MyWCFDataService(url);
var companies = proxy.Companies;
foreach (var company in companies)
{
proxy.LoadProperty(company, "Departments");
foreach (var dept in company.Departments)
{
proxy.LoadProperty(dept, "Employees");
}
}
如果我必须执行上述操作,那么我想在服务操作中执行此操作,这样我就可以从我的 UI 控制器中得到这个意大利面条的混乱。我试图用以下方法做到这一点:
[WebGet]
public IQueryable<Company> GetCompanies()
{
var companies = this.CurrentDataSource.Companies.Include("Departments");
return companies;
}
我的Company
收藏恢复得很好,但我又没有Department
收藏,它只是一个空列表。
有什么想法吗?