【发布时间】:2013-05-21 19:50:56
【问题描述】:
我有以下课程:
class Operation
{
User User_AssignedTo;
ResourceGroup ResourceGroup;
}
class ResourceGroup
{
List<User> UsersCollection;
}
而且我有方法。它接受用户和返回操作。 类似的东西:
ResourceGroup resourceGroup = null;
query = conn.Session.QueryOver<Operation>()
.JoinAlias(item => item.ResourceGroup, () => resourceGroup)
.Where(item => item.User_AssignedTo.Id == user.Id || resourceGroup.UsersCollection.Contains(userDm));
但我有例外
Unrecognised method call: System.Collections.Generic.ICollection`1[[Mapping.Classes.User, Mapping.Classes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8ab89f53b66a52c3]]:Boolean Contains
【问题讨论】:
-
我没有 NHibernate,但我想问题可能是它无法将
Contains()转换为 SQL 查询。你能用resourceGroup.UsersCollection.Any(u => u.ID == userDm.ID)之类的东西吗? -
我试过了,但我得到了同样的例外,但对于 Any
-
NHibernate 不喜欢 '||'操作员。试试这个:[stackoverflow.com/questions/3299022/… [1]:stackoverflow.com/questions/3299022/…
-
您能否展示一下您对
Any()的尝试? -
@Linus:
Any在这里不起作用。 QueryOver翻译成SQL,.Any是QueryOver不知道怎么转换的方法。
标签: c# nhibernate queryover