NHibernate AssertException:Interceptor.OnPrepareStatement(SqlString)返回null或空SqlString

NHibernate AssertException:Interceptor.OnPrepareStatement(SqlString)返回null或空SqlString,nhibernate,nhibernate-mapping,interceptor,Nhibernate,Nhibernate Mapping,Interceptor,我正在尝试将一个表从多对一映射转换为具有中间映射表的多对多映射。然而,当我切换它并尝试使用NHibernate对其进行查询时,它给出了以下错误:“Interceptor.OnPrepareStatement(SqlString)返回null或空SqlString。” 我的查询最初是更复杂的,但我将其切换为基本的“全部获取”,但仍然存在问题: Session.QueryOver<T>().Future(); Session.QueryOver().Future(); 这可能是我的模

我正在尝试将一个表从多对一映射转换为具有中间映射表的多对多映射。然而,当我切换它并尝试使用NHibernate对其进行查询时,它给出了以下错误:“Interceptor.OnPrepareStatement(SqlString)返回null或空SqlString。”

我的查询最初是更复杂的,但我将其切换为基本的“全部获取”,但仍然存在问题:

Session.QueryOver<T>().Future();
Session.QueryOver().Future();
这可能是我的模型映射文件中的问题,也可能是数据库中的问题

以下是我的模型映射:

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



正如我提到的,MarketUpdate最初是与Market的多对一(MarketId列仍在其中,但我忽略了它。这可能是个问题吗?)。但是我在Market\u MarketUpdate\u映射表中添加了多对多

我在兜圈子,想弄清楚这可能是什么。搜索时,我找不到此错误的任何引用。它也没有提供太多细节

使用:

NHibernate 2.2

.NET4.0


SQL Server 2005

原来问题只是xml映射文件被设置为内容,而不是visual studio中的嵌入式资源。更改此选项修复了我的所有问题。

如果使用Fluent而不是xml进行映射时遇到此问题,请尝试删除
%root%\LocalCache\NHibernate
中生成的xml文件

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