我正在尝试将linq用于NHibernate(使用Fluent NHibernate)但我遇到linq查询问题。每当我尝试执行它时,我都会收到此消息:
“方法'get_IsReadOnlyInitialized' 在类型 'NHibernate.Linq.Util.DetachedCriteriaAdapter' 来自装配'NHibernate.Linq, 版本= 1.1.0.1001,文化=中立, PublicKeyToken = null'没有 实施“
有人知道如何解决这个问题吗?我尝试使用模型上下文的解决方案表单this page,但它没有帮助。
这是代码:
using(var session = NHibernateHelper.OpenSession())
{
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList();
}
如果我不使用 where 部分,一切都很好,但如果我使用它,我会收到此错误。我认为问题出在NHibernate.Linq.dll
答案 0 :(得分:54)
你应该不在NHibernate 3.0中使用NHibernate.Linq.dll! NHibernate 3.0包含Linq(比旧的扩展dll更好的版本),你只需要添加using NHibernate.Linq;
并使用session.Query<T>()
而不是session.Linq<T>()
。
答案 1 :(得分:0)
据我所知,你不是在比较,而是分配文本。
不应该是==而不是=:
using(var session = NHibernateHelper.OpenSession()) {
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList();
}