【发布时间】:2011-02-07 03:16:23
【问题描述】:
我有一个 WCF RIA 服务应用程序和一个包含 UserPermission 对象集合的 UserRole 类型的模型。我在域服务中使用 .Include("UserPermission") ,当我调试它时,我已经验证它在返回之前肯定包含 UserPermission 类型。
当我调试 Silverlight 3 客户端时,它返回 UserRoles,但 UserPermission 属性全部为空。这些是在服务上显示具有 UserPermissions 的相同 UserRoles。
由于服务和客户端上的一切看起来都是正确的,我专注于元数据类,但仍然找不到任何错误。
[MetadataTypeAttribute(typeof(UserRole.UserRoleMetadata))]
public partial class UserRole
{
internal sealed class UserRoleMetadata
{
public int RoleID;
public string Name;
[Include]
[Association("UserPermissions", "RoleID", "PermissionID")]
public EntityCollection<UserPermission> UserPermissions;
}
}
域服务方法如下:
public IEnumerable<UserRole> GetUserRoles()
{
IEnumerable<UserRole> roles = this.ObjectContext.UserRole.Include("UserPermissions");
return roles; // In debug, roles.First().UserPermissions.Count = 2 here
// For now, there is only one single role in the ObjectContext and it has
// two UserPermissions
}
这是 Silverlight 客户端方法:
context.Load(context.GetUserRolesQuery(), loadOp =>
{
IEnumerable<UserRole> roles = loadOp.Entities;
// This should show 2, but shows 0:
MessageBox.Show("Permissions loaded: " + roles.First().UserPermissions.Count.ToString());
}
有谁知道可能导致这些包含的实体丢失的任何事情?我在其他几个地方也做过同样的事情,它们也能正常工作。
【问题讨论】:
标签: c# entity-framework .net-3.5 wcf-ria-services