代码之家  ›  专栏  ›  技术社区  ›  sebagomez

如何通过RIA服务获取实体及其子实体

  •  0
  • sebagomez  · 技术社区  · 14 年前

    我对EF和RIA还不太熟悉,所以我不确定这是否有效。

    我这里有一个简单的模型:

    alt text

    我添加了 POCO templates for entity framework

    问题是,在服务器上,我可以通过调用 comp.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);
    }
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Thomas Levesque    14 年前

    我对RIA服务了解不多,但我怀疑从客户端延迟加载是否可行。。。我想你需要把 SubComponents 当你装载 Components ,在发送给客户之前:

    public IEnumerable<Component> GetComponents()
    {
        return m_ctx.Components.Include("SubComponents")
               .OrderBy(x => x.Name);
    }
    
        2
  •  0
  •   sebagomez    14 年前

    [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; }
    
        }
    }
    

    我希望它能帮助某人:)

    :我在添加 [包括] System.ServiceModel.DomainServices.Server.dll

    编辑 ComponentId

    alt text

    推荐文章