5

MVC 4 アプリケーションでデータを取得するように NHibernate を構成する際に問題が発生しています。

簡単にするために、すべてのコードを Index メソッドに構成しました。

私のカテゴリコントローラーのコードは次のとおりです。

カテゴリ コントローラ コード

そして、これが web.config の私の設定です:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory name="NHibernate.Test">
      <property name="connection.driver_class">
        NHibernate.Driver.SqlClientDriver
      </property>
      <property name="connection.connection_string">
        Data Source=.;Initial Catalog=UsingNH;uid=myuid;Password=mypwd
      </property>
      <property name="adonet.batch_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="use_outer_join">true</property>
      <property name="command_timeout">60</property>
      <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
      <property name="proxyfactory.factory_class">
        NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu
      </property>
    </session-factory>
  </hibernate-configuration>

カテゴリのマッピング ファイルは

<?xml version="1.0" encoding="utf-8" ?> 

<hibernate-mapping xmlns="nhibernate-mapping-2.2" namespace="UsingNHibernate.Models" assembly="UsingNHibernate">
  <class name="Category" table="Categories" lazy="false">

    <id name="Id" columnId="Id" unsaved-value="0">
      <generator class="native" />
    </id>

    <property name="Name">
      <column name="Name" data-type="varchar(50)" not-null="true" />
    </property>

  </class>
</hibernate-mapping>

カテゴリ テーブルのスキーマは次のとおりです。

CREATE TABLE [dbo].[Categories](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Category] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)
) ON [PRIMARY]

問題は、プログラムが適切にコンパイルおよび実行されるが、カテゴリが返されないことです。

コード

var lst = (List<Category>)criterion.List<Category>();

0 項目を返します (デバッガーで検証済み)。

構成ファイルまたはマッピング ファイルに問題はありますか?

追加情報が必要な場合はコメントしてください。

ありがとう。

4

2 に答える 2

16

マッピングが定義されていない場合、nhibernate はサイレントに失敗し、エンティティのリストをクエリすると空のリストを返します。

マッピング ファイルを bin ディレクトリにコピーしていないと思います。コピーするマッピング ファイルをマークします (プロパティを使用)。

于 2013-10-20T11:22:37.823 に答える