我有一個WCF RIA Services應用程序和一個UserRole類型的模型,其中包含一組UserPermission對象。我在域服務中使用.Include(「UserPermission」),當我調試它時,我已經驗證它在返回之前肯定包含UserPermission類型。RIA服務不返回包含類型集合屬性
當我調試Silverlight 3客戶端時,它返回UserRoles但UserPermission屬性都是空的。這些是相同的UserRoles,顯示服務上有UserPermissions。
由於服務和客戶端上的所有內容都顯示正確,因此我將重點放在元數據類上,但仍然找不到任何錯誤。
[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());
}
有誰知道任何可能導致這些包括實體的損失?我在其他幾個地方也做同樣的事情,他們工作。