给定以下示例模型(它反射(reflect)了我的 Entity Framework 实体,为简洁起见省略了属性):
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 的最佳实践/更优雅的方式,每个 Company 都有每个 respetive 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 Controller 中清除意大利面条式的困惑情况。我尝试通过以下方式做到这一点:
[WebGet]
public IQueryable<Company> GetCompanies()
{
var companies = this.CurrentDataSource.Companies.Include("Departments");
return companies;
}
我正在恢复我的 Company 集合,但是我又没有 Department 集合,它只是一个空列表。
有什么想法吗?
请您参考如下方法:
var companies = proxy.Companies.Expand("Departments");
