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只是选择了一个任意名称.现在构建成功并且该属性在客户端上可用,但是我从服务器填充的数据在客户端上不可用.我该如何解决?
提前致谢 :)
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)
| 归档时间: |
|
| 查看次数: |
3012 次 |
| 最近记录: |