linq查询问题

时间:2011-05-09 17:56:55

标签: linq nhibernate fluent-nhibernate linq-to-nhibernate

我正在尝试将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

2 个答案:

答案 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();
}