2011-05-09 31 views
30

Estoy tratando de usar linq para NHibernate (con Fluiber NHibernate) pero tengo problemas con la consulta de linq. Cada vez que intento ejecutarlo me sale este mensaje:Problema con la consulta de linq

"Método 'get_IsReadOnlyInitialized' en el tipo 'NHibernate.Linq.Util.DetachedCriteriaAdapter' del ensamblado 'NHibernate.Linq, = Versión 1.1.0.1001 , Culture = neutral, PublicKeyToken = null' no tiene una implementación . "

¿alguien sabe cómo solucionar este problema? Intenté con la solución del formulario this page con el contexto del modelo, pero no ayudó.

Este es el código:

using(var session = NHibernateHelper.OpenSession()) 
{ 
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList(); 
} 

Todo está bien si yo no uso la parte donde pero si lo uso me sale este error. Creo que el problema está en NHibernate.Linq.dll

+0

Siempre es una buena idea publicar el código que le está causando problemas. ¿Puedes hacer eso? – csano

+0

es esto usando el proyecto Nhibernate 2 y NHibernate.Linq? Ha intentado probar lo mismo en Nhibernate 3, si mal no recuerdo, el soporte de Linq debe estar incorporado. – Tomas

+0

No, tengo NHibernate 3.1.0.4000, FluentNHibernate 1.2.0.712 y NHibernate.Linq 1.0. No está incorporado. Tuve que agregarlo de forma independiente. – Athina

Respuesta

54

Usted debe no uso NHibernate.Linq.dll con NHibernate 3.0! NHibernate 3.0 tiene Linq incluido (una versión mucho mejor que la anterior extensión dll), solo necesita agregar using NHibernate.Linq; y usar session.Query<T>() en lugar de session.Linq<T>().

+1

¡Muchas gracias! :) – Athina

+0

me salvó el día! muchas gracias ! –

+1

¿qué se usa en lugar de 'QueryOptions', y' NHibernateQueryProvider'? – Maslow

0

por lo que puedo ver que no está comparando, pero asignando el texto.

caso de no ser == en lugar de =:

using(var session = NHibernateHelper.OpenSession()) { 
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList(); 
} 
+0

Tengo == en el código. Cometí un error al escribir el código. – Athina

Cuestiones relacionadas