为什么NHibernate没有返回任何数据?

Din*_*esh 5 c# nhibernate asp.net-mvc-4

我在配置NHibernate以检索我的MVC 4应用程序中的数据时遇到一些问题.

为了简单起见,我在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>
Run Code Online (Sandbox Code Playgroud)

Category的映射文件是

<?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>
Run Code Online (Sandbox Code Playgroud)

和类表模式是

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]
Run Code Online (Sandbox Code Playgroud)

问题是该程序编译并运行良好但不返回任何类别.

代码

var lst = (List<Category>)criterion.List<Category>();
Run Code Online (Sandbox Code Playgroud)

返回0项(在调试器中验证).

我的配置或映射文件有问题吗?

评论是否需要其他信息.

谢谢.

Mic*_*haC 14

如果没有定义映射,那么nhibernate将无声地失败并在查询实体列表时返回空列表.

我想你不会将映射文件复制到你的bin目录.标记要复制的映射文件(通过属性).

  • 是的..我忘了将映射文件的BuildAction更改为EmbeddedResource.这样做后,我的映射文件中出现了多个问题.解决了问题,现在我开始工作了.谢谢指针:) (4认同)
  • 我无法理解为什么 NHibernate 的某些人认为默默失败是一个好主意。 (2认同)