0
我想添加一个映射到表IdentityGroup,它有ManyToMany IdentityUsers认为表IdentityGroupIdentitiy表。但是,当我添加映射。结果似乎是一个像交叉连接的东西。NHibertnate映射HasManyToMany结果CROSS JOIN
为一组与两个用户预期的结果:
Group 1:
User 1
User 2
目前的结果为一组有两个用户:
Group 1:
User 1
User 2
Group 1:
User 1
User 2
我的映射是这样的:
mapping.HasManyToMany<IdentityUser>(x => x.Users)
.Table("IdentityGroupIdentity")
.ParentKeyColumn("identityGroup_cid")
.ChildKeyColumn("identity_cid");
代码取数据:
public IQueryable<T> Find<T>(params string[] propertiesToLoad)
{
var query = session.Linq<T>();
foreach (var propName in propertiesToLoad)
query.Expand(propName);
if (typeof(T) is ISoftDeletable)
query.Where(x => !(x as ISoftDeletable).IsDeleted);
return query;
}
[...]
public IQueryable<IdentityGroup> Groups
{
get { return Find<IdentityGroup>(new string[] { "DefaultOrganization", "DefaultLocation", "Users" }); }
}
蚂蚁的想法?
您可以发布您使用获取组的代码吗?我怀疑你可能需要使用DistinctRootEntityTransformer来扁平化对象图表,如果你急切地加载用户和组。 – DanP 2010-08-12 10:57:40
编辑该帖子 – dale 2010-08-12 11:17:10