gpt4 book ai didi

nhibernate - 如何强制 RIA 服务在一种查询方法中包含子实体而不在另一种方法中包含子实体

转载 作者:行者123 更新时间:2023-12-04 21:50:25 26 4
gpt4 key购买 nike

这是场景:

我在“组”和“用户”之间建立了关联,由“UserGroupAssignment”对象表示。

public class UserGroupAssignment
{
[Key]
public virtual long Id { get; set; }

[Association("UserAssignmentToUser", "UserId", "Id", IsForeignKey = true)]
public virtual User { get; set; }

[Association("UserAssignmentToGroup", "GroupId", "Id", IsForeignKey = true)]
public virtual Group { get; set; }

public virtual bool IsPrimary { get; set; }

public virtual DateTime? ValidFrom { get; set; }

public virtual DateTime? ValidTo { get; set; }
}

我有两个业务逻辑方法,GetUserAssignmentsForGroups 和 GetGroupAssignmentsForUsers,我分别返回填充了 User 和 Group 属性的分配。即 GetUserAssignmentsForGroup 采用 GroupId 并返回该组的分配,并填充 User 属性。

我想要的是将这两种方法公开为域查询方法,如下所示:
[Query]
public IQueryable<UserGroupAssignment> GetAssignmentsForGroupWithUsers(long groupId)
{
return this.businessLogic.GetUserAssignmentsForGroups(groupId);
}

[Query]
public IQueryable<UserGroupAssignment> GetAssignmentsForUserWithGroups(long userId)
{
return this.businessLogic.GetGroupAssignmentsForUsers(userId)
}

我的问题是,虽然业务逻辑方法通过 NHibernate 返回正确填充的分配,但 RIA 服务不会通过网络传递子实体(用户或组)。

我不想在 UserAssignment 类的 User 或 Group 属性上使用 [Include] 属性,因为我想最小化线路上的有效负载 - 我不想在我只对组感兴趣时发送组例如,每个 UserAssignment 的 User。

所以我的问题是:

How do I tell RIA services to explicitly include User sub-entities in one domain query method and Group sub-entities in the other?



请记住,我在后端使用 NHibernate,在 RIA 服务中使用自定义查询方法,因此不能在客户端查询中使用 EF 样式的包含。

谢谢

乔尔

最佳答案

您应该申请 [Include]元数据类中的属性。然后创建一个域服务方法来获取不包含属性的数据,以及一个单独的方法来获取包含属性的数据。

您可能会发现 this thread有助于理解如何[Include]属性作品。

关于nhibernate - 如何强制 RIA 服务在一种查询方法中包含子实体而不在另一种方法中包含子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com