2010-12-22 11 views
8

Estoy intentando cambiar una tabla de una mapeo de muchos a uno a muchos a varios con una tabla de mapeo intermedio. Sin embargo, cuando lo cambié e intenté hacer una consulta sobre él con NHibernate, me está dando este error: "Interceptor.OnPrepareStatement (SqlString) devolvió nulo o SqlString vacío."NHibernate AssertException: Interceptor.OnPrepareStatement (SqlString) devuelto nulo o vacío SqlString

Mi consulta era originalmente algo más complejo, pero lo cambió a un básico obtener todos y sigo teniendo el problema:

Session.QueryOver<T>().Future(); 

parecería ser un problema en mis archivos de asignación modelo o algo en mi base de datos.

Éstos son mis asignaciones de modelo:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="GBI.Core" namespace="GBI.Core.Models"> 

<class name="Market" table="gbi_Market"> 
    <id name="Id" column="MarketId"> 
     <generator class="identity" /> 
    </id> 
    <property name="Name" /> 
    <property name="Url" /> 
    <property name="Description" type="StringClob" /> 
    <property name="Rating" /> 
    <property name="RatingComment" /> 
    <property name="RatingCommentedOn" /> 
    <many-to-one name="RatingCommentedBy" column="RatingCommentedBy" lazy="proxy"></many-to-one> 
    <property name="ImageFilename" /> 
    <property name="CreatedOn" /> 
    <property name="ModifiedOn" /> 
    <property name="IsDeleted" /> 

    <many-to-one name="CreatedBy" column="CreatedBy" lazy="proxy"></many-to-one> 
    <many-to-one name="ModifiedBy" column="ModifiedBy" lazy="proxy"></many-to-one> 

    <set name="Content" where="IsDeleted=0 and ParentContentId is NULL" order-by="Ordering asc, CreatedOn asc, Name asc" lazy="extra"> 
     <key column="MarketId" /> 
     <one-to-many class="MarketContent" /> 
    </set> 

    <set name="FastFacts" where="IsDeleted=0" order-by="Ordering asc, CreatedOn asc, Name asc" lazy="extra"> 
     <key column="MarketId" /> 
     <one-to-many class="MarketFastFact" /> 
    </set> 

    <set name="NewsItems" table="gbi_NewsItem_Market_Map" lazy="true"> 
     <key column="MarketId" /> 
     <many-to-many class="NewsItem" fetch="join" column="NewsItemId" where="IsDeleted=0"/> 
    </set> 

    <!--<set name="MarketUpdates" table="gbi_Market_MarketUpdate_Map" lazy="extra"> 
     <key column="MarketId" /> 
     <many-to-many class="MarketUpdate" fetch="join" column="MarketUpdateId" where="IsDeleted=0" order-by="CreatedOn desc" /> 
    </set>--> 

    <set name="Documents" table="gbi_Market_Document_Map" lazy="true"> 
     <key column="MarketId" /> 
     <many-to-many class="Document" fetch="join" column="DocumentId" where="IsDeleted=0"/> 
    </set> 
</class> 

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="GBI.Core" namespace="GBI.Core.Models"> 

<class name="MarketUpdate" table="gbi_MarketUpdate"> 
    <id name="Id" column="MarketUpdateId"> 
     <generator class="identity" /> 
    </id> 
    <property name="Description" /> 
    <property name="CreatedOn" /> 
    <property name="ModifiedOn" /> 
    <property name="IsDeleted" /> 

    <!--<many-to-one name="Market" column="MarketId" lazy="proxy"></many-to-one>--> 

    <set name="Comments" where="IsDeleted=0" order-by="CreatedOn desc" lazy="extra"> 
     <key column="MarketUpdateId" /> 
     <one-to-many class="MarketUpdateComment" /> 
    </set> 

    <many-to-one name="CreatedBy" column="CreatedBy" lazy="proxy"></many-to-one> 
    <many-to-one name="ModifiedBy" column="ModifiedBy" lazy="proxy"></many-to-one> 
</class> 

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="GBI.Core" namespace="GBI.Core.Models"> 

<class name="MarketUpdateMarketMap" table="gbi_Market_MarketUpdate_Map"> 
    <id name="Id" column="MarketUpdateMarketMapId"> 
     <generator class="identity" /> 
    </id> 
    <property name="CreatedOn" /> 
    <property name="ModifiedOn" /> 
    <property name="IsDeleted" /> 

    <many-to-one name="CreatedBy" column="CreatedBy" lazy="proxy"></many-to-one> 
    <many-to-one name="ModifiedBy" column="ModifiedBy" lazy="proxy"></many-to-one> 

    <many-to-one name="MarketUpdate" column="MarketUpdateId" lazy="proxy"></many-to-one> 
    <many-to-one name="Market" column="MarketId" lazy="proxy"></many-to-one> 
</class> 

Como ya he mencionado, MarketUpdate fue originalmente una relación muchos-a-uno con el mercado (MarketId c olumn todavía está ahí, pero lo estoy ignorando. ¿Podría esto ser un problema?). Pero he agregado en la tabla Market_MarketUpdate_Map para que sea de muchos a muchos.

Estoy corriendo en círculos intentando descubrir qué podría ser. No pude encontrar ninguna referencia a este error al buscar. Y no proporciona muchos detalles.

Usando:

NHibernate 2.2

.NET 4.0

SQL Server 2005

Respuesta

16

Resulta que el problema fue sólo que el archivo de asignación XML se establece como contenido en lugar de recurso incrustado en estudio visual. Cambiar eso solucionó todos mis problemas.

1

Si usa Fluent en lugar de xml para correlaciones y encuentra este problema, intente eliminar los archivos xml generados en %root%\LocalCache\NHibernate.

Cuestiones relacionadas