2010-12-22 13 views
8

Tabloyu, bire bir eşleme tablosuyla çoktan çoğa, çoktan çoğa eşleşmeye dönüştürmeye çalışıyorum. Ancak, NHibernate ile değiştirdim ve üzerinde bir sorgu yapmaya çalıştığında, bana bu hatayı veriyor: "Interceptor.OnPrepareStatement (SqlString) boş veya boş SqlString döndürdü."NHibernate AssertException: Interceptor.OnPrepareStatement (SqlString) null veya boş döndü SqlString

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

O görünüyor ya benim modeli eşleme dosyalarında bir sorun olacağını: Bütün getirme ve hala sorun yaşıyorum

Benim sorgu başlangıçta daha karmaşık bir şeydi, ama temel bunu açık veya veritabanımda bir şey var. İşte

modelim eşleştirmeleri şunlardır: Ben de belirtildiği gibi

<?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> 

, MarketUpdate aslen bir çoğu bire Market ile (MarketId c Olumn hala orada, ama görmezden geliyorum. Bu bir sorun olabilir mi?). Ancak, bunu çoktan çoğa yapmak için Market_MarketUpdate_Map tablosuna ekledim.

Bunun ne olabileceğini anlamaya çalışarak daireler çiziyorum. Arama yaparken bu hataya herhangi bir başvuru bulamadım. Ve çok detay vermiyor.

kullanma:

NHibernate 2.2

.NET 4.0

SQL Server 2005

cevap

16

sorun xml eşleme dosyası yerine gömülü kaynağın içerik olarak belirlendi edildi sadece çıkıyor görsel stüdyo. Bütün sorunlarımı değiştirdim.

1

Haritalama için xml yerine Fluent kullanıyorsanız ve bu sorunla karşılaşırsanız, oluşturulan xml dosyalarını %root%\LocalCache\NHibernate'da silmeyi deneyin.

İlgili konular