【发布时间】:2012-03-25 21:40:09
【问题描述】:
我正在尝试使用来自 windows phone 7 silverlight 客户端的 odata 提要。基本上是组和用户之间的多对多数据关系,它们之间有一个 UserGroup 表。当用户登录时,我需要使用她的 UserId 查询她所属的组。我的数据类如下
[DataServiceKey("Id")]
public class Group
{
public Guid Id { get; set; }
public string GroupTag { get; set; }
public DateTime DateCreated { get; set; }
[ForeignKey("GroupOwner")]
public Guid? GroupOwnerId { get; set; }
public virtual Person GroupOwner { get; set; }
public bool IsActive { get; set; }
public virtual ICollection<GroupUser> GroupUsers { get; set; }
}
[DataServiceKey("Id")]
public class GroupUser
{
public Guid Id { get; set; }
[ForeignKey("Group")]
public Guid GroupId { get; set; }
public virtual Group Group { get; set; }
[ForeignKey("Person")]
public Guid PersonId { get; set; }
public virtual Person Person { get; set; }
public bool IsActive { get; set; }
}
[DataServiceKey("Id")]
public class User
{
public Guid Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public virtual ICollection<GroupUser> UserGroups { get; set; }
public virtual ICollection<Group> MyGroups { get; set; }
}
我已经尝试了我所知道的一切来获得这个结果,但无论我做什么,我都会一个接一个地收到一个错误。缺少两个我不想做的查询,因为它太乱了,有什么解决办法吗?
--------更新-----
通过一夜的研究,我发现odata有不支持'Any'和'All'类型查询的限制,所以我的查询暂时无法进行。我还从here 发现,我的 poco 类的实现可以稍微修改以表示多对多关系,而无需在中间显式定义类,这可能有助于我解决这个导航问题。 我仍在解决它,因为我在定义导航属性时遇到问题,但是一旦我有解决方案,我就会把它放在这里,这样它可以帮助其他一些走这条路的倒霉旅行者。
【问题讨论】:
-
您希望得到什么结果?
-
嗨 CasperOne,我希望提供一个 UserId 并获取用户所属的组列表。