Luk*_*uka 6 nhibernate distinct queryover
我有这种情况:
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");
Run Code Online (Sandbox Code Playgroud)
现在我想返回List Distinct User,所以我不能这样做
TransformUsing(Transformers.DistinctRootEntity)
因为这会给我UserRelationship.
我需要这样的东西:
Select distinct user.ID
from UserRelationship relationship
inner join User user on user.ID = relationship.MemberUser_ID
Run Code Online (Sandbox Code Playgroud)
请帮助谢谢
鉴于课程:
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;}
}
Run Code Online (Sandbox Code Playgroud)
以及以下的流畅映射:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您想要从 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)
Run Code Online (Sandbox Code Playgroud)
这应该在 SQL 中使用 In 子句来为您提供不同的用户列表。
| 归档时间: |
|
| 查看次数: |
4871 次 |
| 最近记录: |