gpt4 book ai didi

NHibernate QueryOver distinct

转载 作者:行者123 更新时间:2023-12-03 09:43:00 30 4
gpt4 key购买 nike

我有这个
设想:

class User
{
Id,
UserName
}

class UserRelationship
{
User GroupUser,
User MemberUser
}

and query

var query = QueryOver.Of<UserRelationship>()
.JoinqueryOver(x=>x.MemberUser)
.Where(x=>x.UserName == "TestUser");

现在我想返回 List Distinct User,所以我做不到

TransformUsing(Transformers.DistinctRootEntity)



因为这会给我 UserRelationship。

我需要这样的东西:
Select distinct user.ID 
from UserRelationship relationship
inner join User user on user.ID = relationship.MemberUser_ID

请帮忙
谢谢

最佳答案

鉴于类(class):

public class User
{
public virtual int Id {get; set;}
public virtual string UserName {get; set;}
}

public class UserRelationship
{
public virtual int Id {get; set;}
public virtual User GroupUser {get; set;}
public virtual User MemberUser {get; set;}
}

以及流畅的映射:
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x=>x.Id).GeneratedBy.Native();
Map(x=>x.UserName);
}
}

public class UserRelationshipMap : ClassMap<UserRelationship>
{
public UserRelationshipMap(){
Id(x=>x.Id).GeneratedBy.Native();
References(x=>x.GroupUser);
References(x=>x.MemberUser);
}
}

您想根据 UserRelationship 类中的“MemberUser”检索不同的“User”列表。
var distinctMemberUsers = QueryOver.Of<UserRelationship>()
.Select(x => x.MemberUser.Id);

var users = QueryOver.Of<User>()
.WithSubquery.WhereProperty(x=>x.Id).In(distinctMemberUsers)

这应该在 SQL 中使用 In 子句来为您提供一个不同的用户列表。

关于NHibernate QueryOver distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965585/

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