我有一些代码尝试访问相同的关联路径两次,它们实际上是相同的别名,但是因为我使用的是查询对象,所以我将它们放在两个不同的地方,我不确定如何获取别名.
可能是一些代码可以清除混乱:
var privateBlogQuery = new BlogQuery()
.ByUser(1)
.RemoveHidden()
.FetchUserDetails();
//<-------- In Blog Query object class: ------>
/// Gets all the private blogs the user has permissions to view
public BlogQuery ByUser(int userId)
{
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers, () => authorisedUsers)
.Where(r => r.User.Id == userId);
return this;
}
/// Removes all private blogs user has marked to be hidden
public BlogQuery RemoveHidden()
{
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers, () => authorisedUsers)
.Where(r => !r.IsHidden);
return this;
}
/// Loads up details of all users who have permission
/// to view the private blog
public BlogQuery FetchUserDetails()
{
var users = null;
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers, () => authorisedUsers)
.Left.JoinQueryOver(r => r.User, () => users);
return this;
}
有时我单独使用所有 3 个标准,而生成的 sql 正是我需要的,只要它们单独使用,一切都很好。
现在我需要一起使用它们,同时 nhibernate 抛出异常duplicate alias
,我更改了这三个函数的别名,但随后我受到了欢迎duplicate association path
异常。
谷歌搜索了一下,我了解到这是休眠中的一个错误,我还发现了一些解决此错误的方法
问题是我正在使用 Query 对象,因此 Query 结束了,我不确定如何在此处获取关联路径/别名。
那么我该怎么做呢?