我是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
这是我的结构:
知道这里出了什么问题吗?我认为我的文件结构也是错误的。
答案 0 :(得分:2)
所以我自己发现了这些问题(RadimKöhler提供了一些帮助):
第一个问题
.hbm.xml
- 文件的属性
Embedded Resource
。Do not copy
第二个问题
我正在添加两次装配。
hibernate.cfg.xml
:<mapping assembly="WebApplication1"/>
configuration.AddAssembly(Assembly.GetCallingAssembly());
我现在删除了hibernate.cfg.xml