我是EF和RIA的新手,所以我不确定这是否应该起作用。
我有一个简单的模型:
我添加了POCO templates for entity framework,所有内容都已连线,因此我可以获得延迟加载,更改通知和关系修复...(我真的希望你还在阅读)
事情是,在服务器上,我可以通过简单地调用comp.SubComponents
来加载Component的SubComponents。但是,出于某种原因,我在客户端没有该功能... Component
(生成的代码)中的RIAServices.web.g.cs
类没有SubComponent
列表。
这是假设的工作方式吗?我应该在RIA服务上有这个功能吗?
public IEnumerable<SubComponent> GetSubComponents(int componentId)
{
return m_ctx.SubComponents
.Where(x => x.Component.Id == componentId)
.OrderBy(x => x.Name);
}
答案 0 :(得分:1)
我对RIA服务了解不多,但我怀疑延迟加载可以在客户端工作......我认为你需要在加载SubComponents
时急切加载Components
,在将它们发送给客户之前:
public IEnumerable<Component> GetComponents()
{
return m_ctx.Components.Include("SubComponents")
.OrderBy(x => x.Name);
}
答案 1 :(得分:0)
在我的元数据中,我在Componet的元数据SubComponent属性中缺少属性[Include]
和[Association]
。该课程必须如下:
[MetadataType(typeof(Component.Metadata))]
public partial class Component
{
internal sealed class Metadata
{
[Key]
public int Id { get; set; }
[Include]
[Association("ComponentSubComponent","Id", "ComponentId")]
public ICollection<SubComponent> SubComponents { get; set; }
}
}
我希望它有助于某人:)
额外提示:我在添加[Include]
属性时遇到问题,因为我没有引用正确的程序集。请务必添加对System.ServiceModel.DomainServices.Server.dll
编辑:我忘了提到我在SubComponent实体上也缺少ComponentId
属性