Ria Services使用Linq-to-SQL加载外键

时间:2010-03-31 15:57:02

标签: silverlight linq-to-sql wcf-ria-services

我有一个由5个表组成的数据库:Course,Category,Location,CourseCategories和CourseLocations。最后两个表只包含两个外键。课程与类别和位置有多对多的关系。

我正在尝试使用Ria Services将数据加载到Silverlight应用程序中。我的数据库模型是Linq-to-SQL。我已经尝试将[Include]属性添加到元数据类中,并且我添加了DataLoadOptions,因此它应该在您请求课程时加载所有表。但是在客户端,我永远不会收到CourseCategories和CourseLocations属性中的任何条目。

还需要做些什么来使序列化中存在外键关系。

2 个答案:

答案 0 :(得分:4)

包含来自外键关系的记录有两个步骤:

<强> 1。告诉WCF RIA服务包含

[Include]属性放在实体的定义中,位于外键

之上
[Include]
public MyOtherTable MyOtherTable { get; set; }

<强> 2。告诉WCF RIA Servics此特定查询使用Include

在您的查询中,您必须使用.Include("MyOtherTable")逻辑来告知此查询包含该关系中的数据。

public IQueryable<Table> GetTable()    
{
    return this.ObjectContext.Table.Include("MyOtherTable");
}

听起来你错过了第二步。第二步允许您选择下载这些额外记录的查询。

答案 1 :(得分:0)