如果您创建DomainService,公开实体,您可以访问聚合实体吗?

时间:2010-12-08 22:40:02

标签: c# entity-framework-4 wcf-ria-services odata

假设您创建了一个RIA DomainService,并在其中包含Person(如下所示)实体,您是否可以访问该对象上的聚合实体?

例如,如果我有这样的实体(请记住,这是一个天真的表示,它们是通过EF4设计师建模的):

public class Person
{
    string FirstName { get; set; }
    PhoneNumber { get; set; }
}

public class PhoneNumber
{
    public string AreaCode { get; set; }
    public string Trunk { get; set; }
    public string Number { get; set; }
}

如果我在创建PeopleDomainService时包含Person,客户端是否可以访问PhoneNumber(并修改它)?

2 个答案:

答案 0 :(得分:2)

您可以使用[Include]属性修饰Person对象的PhoneNumber属性。还要记住在获取Person对象时在LINQ查询中包含include语句。

答案 1 :(得分:1)

是的,您可以引入相关实体。

在PeopleDomainService.metadata.cs文件中,查找PersonMetadata类。在PhoneNumbers属性上,添加“Include”属性:

[Include]:
public EntityCollection<PhoneNumber> PhoneNumbers { get; set; }

在PeopleDomainService.cs中,查找GetPersons函数并修改它以包含PhoneNumbers:

public IQueryable<Person> GetPersons()
{
    return this.ObjectContext.Persons.Include("PhoneNumbers");
}

您可以在MSDN上找到更多详细信息&gt; Walkthrough: Taking a Tour of RIA Services&gt;显示相关数据