【发布时间】:2011-04-08 22:06:59
【问题描述】:
假设我在我的 EF 实体中设置了 Category > SubCategory > SubSubCategory > Item。
使用 WCF RIA 服务在对服务器的单个请求中获取 Category、Subcategory、SubSubCategory 和 Item where Item.Property = x all 的最佳方法是什么?
使用 .Include 我只能获取实体的子级,而不是孙级,并且进一步向下(或向上取决于您如何看待它)。
此外,如果我这样做......
public IQueryable<ToolingTreeItem> GetTree(int currentLocationId)
{
var tree = from tc in this.ObjectContext.ToolingCategories
from tg in tc.ToolingGroups
from tt in tg.ToolingTypes
from t in tt.Toolings
where t.CurrentLocationId == currentLocationId
select new ToolingTreeItem { Cat = tc, Group = tg, Type = tt, Tool = t };
return tree;
}
...该方法在客户端项目的上下文中不可用,大概是因为我的自定义实体类 ToolingTreeItem 在 WCF RIA 服务的深渊之谜的某处未被识别。
如果现在还不明显,我要做的就是在对服务器的一次调用中使用 Category > SubCategory > SubSubCategory > Item 填充我的 TreeView。最好的方法是什么?
许多快乐的回报!
【问题讨论】:
-
你能发布 ToolingTreeItem 类的定义,你使用了什么属性? RIA 需要序列化成员的 [Serializable] 属性和 [DataMember]。
-
如果从底层开始查询呢: ObjectContext.Toolings.Include("ToolingType.ToolingGroup.ToolingCategory").Where(t => t.CurrentLocationId == currentLocationId).ToList();
标签: silverlight entity-framework wcf-ria-services