客户不提供RIA服务中的定制属性

TCM*_*TCM 1 silverlight silverlight-3.0 silverlight-4.0 wcf-ria-services

我有一个叫做的实体StatusUpdates.它没有自我加入.但是我想要包含一个类型的InternalStatusUpdates列表StatusUpdates(再次我会提到数据库中没有自连接).所以我在同一个命名空间中创建了一个部分类,并创建了一个名为InternalStatusUpdates的[DataMember]属性,并在其上包含了属性.但它仍未出现在客户端上.这是我的特殊课程: -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects.DataClasses;
using System.Runtime.Serialization;
using System.ServiceModel.DomainServices.Server;
using System.ComponentModel.DataAnnotations;

namespace FMT.Data.Web
{
    public partial class StatusUpdate : EntityObject
    {

         private List<StatusUpdate> _internalListStatusUpdates = new List<StatusUpdate>();
         [DataMember]
         public List<StatusUpdate> InternalListStatusUpdates
         {
             get { return _internalListStatusUpdates; }
             set {
                 _internalListStatusUpdates = value;
                 OnPropertyChanged("InternalListStatusUpdates");
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我改变List<StatusUpdate>List<string>它可在客户端上!我该如何解决这个问题?

我想,因为它是我必须指定的实体类型[Include].当我这样做时,我得到以下错误: -

Invalid Include specification for member 'StatusUpdate.InternalListStatusUpdates'. Non-projection includes can only be specified on members with the AssociationAttribute applied.
Run Code Online (Sandbox Code Playgroud)

然后我继续指定关联,所以现在我的财产看起来像: -

private List<StatusUpdate> _internalListStatusUpdates = new List<StatusUpdate>();
     [DataMember]
    [Include]
    [Association("internalUpdates", "StatusUpdatesId", "StatusUpdatesId")]
     public List<StatusUpdate> InternalListStatusUpdates
     {
         get { return _internalListStatusUpdates; }
         set {
             _internalListStatusUpdates = value;
             OnPropertyChanged("InternalListStatusUpdates");
         }
     }
Run Code Online (Sandbox Code Playgroud)

StatusUpdatesId我在StatusUpdatesEntity中的主键在哪里,internalUpdates只是选择了一个任意名称.现在构建成功并且该属性在客户端上可用,但是我从服务器填充的数据在客户端上不可用.我该如何解决?

提前致谢 :)

Flo*_*Lim 7

AssociationAttribute中的第三个参数是列表元素中的外键属性的名称.重要的是要记住,RIA Services将实体放在它们的对应中EntitySet<T>,然后在主键和外键上应用过滤器,而不是使用对其他对象的真实引用.

在给定的情况下,您可能必须为列表元素定义属性"ParentUpdatesId",并使用父StatusUpdate的主键填充该属性.

例:

StatusUpdate su = new StatusUpdate { StatusUpdatesId = 123 };
StatusUpdate child1 = new StatusUpdate { StatusUpdatesId = 1001, ParentUpdatesId = 123 };
StatusUpdate child2 = new StatusUpdate { StatusUpdatesId = 1002, ParentUpdatesId = 123 };
su.InternalListStatusUpdates.Add(child1);
su.InternalListStatusUpdates.Add(child2);
Run Code Online (Sandbox Code Playgroud)

您的协会将如下所示:

[Include]
[Association("internalUpdates", "StatusUpdatesId", "ParentUpdatesId")]
public List<StatusUpdate> InternalListStatusUpdates { ... }
Run Code Online (Sandbox Code Playgroud)