1

给定以下示例模型(它反映了我的实体框架实体,为简洁起见省略了属性):

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收藏,它只是一个空列表。

有什么想法吗?

4

1 回答 1

4
var companies = proxy.Companies.Expand("Departments");
于 2012-09-05T15:17:22.460 回答