NHibernate搜索错误的文件名

时间:2017-09-15 08:11:37

标签: c# nhibernate

我是nhibernate的新手,并尝试了一些教程,但没有一个帮助解决这个问题:

我做了我的映射,类,...当我试图将我的类添加到配置时,hibernate正在搜索错误的文件名(我想在错误的目录中)。

这是我的hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  </configSections>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication2-20170915093558.mdf;Initial Catalog=aspnet-WebApplication2-20170915093558;Integrated Security=True</property>
      <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
      <mapping assembly="WebApplication1"/>
    </session-factory>
  </hibernate-configuration>
</configuration>

这是我的Test - 实体:

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

  <class name="Test" table="Test" lazy="false">
    <id name="Id">
      <generator class="native" />
    </id>
    <property name="Name" />
    <property name="DatasetCreationDate" />
  </class>

</hibernate-mapping>

namespace WebApplication1.Domain
{
    public class Test
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual DateTime DatasetCreationDate { get; set; }
    }
}

这是我现在正在调用的代码:

Configuration configuration = new Configuration();
configuration.AddAssembly(Assembly.GetCallingAssembly());
configuration.AddClass(typeof(Test));
configuration.Configure();
SessionFactory = configuration.BuildSessionFactory();

在这一行,我得到了nhibernate的错误:

configuration.AddClass(typeof(Test));
  

找不到资源:WebApplication1.Domain.Test.hbm.xml

这是我的结构:

enter image description here

知道这里出了什么问题吗?我认为我的文件结构也是错误的。

1 个答案:

答案 0 :(得分:2)

所以我自己发现了这些问题(RadimKöhler提供了一些帮助):

第一个问题

.hbm.xml - 文件的属性

  • 构建操作:Embedded Resource
  • 复制到输出目录:Do not copy

第二个问题

我正在添加两次装配。

  • 进入hibernate.cfg.xml<mapping assembly="WebApplication1"/>
  • 和构建会话工厂时的一次:configuration.AddAssembly(Assembly.GetCallingAssembly());

我现在删除了hibernate.cfg.xml

中的那个