Skip to main content
 首页 » 编程设计

c#之WCF 数据服务集合加载

2024年02月20日27jillzhang

给定以下示例模型(它反射(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");