【发布时间】:2016-07-14 20:39:04
【问题描述】:
我真的不喜欢发布这样的问题,试图寻找一个错误,可能我错过了一些非常简单的东西,但我刚开始学习 NHibernate,我现在正在努力分析这一天找不到问题。
我的域类:
namespace PanoMeasurer.Core.Domain
{
public class Panorama : EntityBase
{
public virtual double HeadingBase
{
get;
set;
}
}
}
namespace PanoMeasurer.Core.Domain
{
public class EntityBase : IEntity
{
public virtual Guid OID
{
get;
set;
}
}
}
我的 Panorama.hbm.xml 映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="PanoMeasurer.Core.Domain"
namespace="PanoMeasurer.Core.Domain">
<class name="Panorama">
<id name="OID" generator="guid.comb"/>
<property name="HeadingBase"/>
</class>
</hibernate-mapping>
还有我在单元测试中调用的代码:
m_config = new Configuration()
.SetProperty(Environment.ReleaseConnections, "on_close")
.SetProperty(Environment.Dialect, typeof(SQLiteDialect).AssemblyQualifiedName)
.SetProperty(Environment.ConnectionDriver, typeof(SQLite20Driver).AssemblyQualifiedName)
.SetProperty(Environment.ConnectionString, "data source =:memory: ")
.AddFile("Mappings/Xml/Panorama.hbm.xml");
m_sessionFactory = m_config.BuildSessionFactory();
Session = m_sessionFactory.OpenSession();
new SchemaExport(m_config).Execute(true, true, false, Session.Connection, Console.Out);
创建新配置时出现异常:
OneTimeSetUp:NHibernate.MappingException:无法编译映射文档:Mappings/Xml/Panorama.hbm.xml ----> System.IO.DirectoryNotFoundException : Não foi possível localizar uma parte do caminho 'C:\Users\Rodrigo\AppData\Local\JetBrains\Installations\ReSharperPlatformVs14\Mappings\Xml\Panorama.hbm.xml'。 异常没有堆栈跟踪
据说它无法编译,据我了解,这是因为它无法在特定路径上找到 xml 文件。为什么它要在 Resharper 文件夹中寻找文件???我的项目的输出都设置为默认的 bin/debug 文件夹。
我的解决方案是这样组织的:
因此您可以看到 PanoMeasurer.Core.Domain 程序集存在并且 Panorama 类位于其中。
并且我的映射文件设置为 EmbededResource:
我还应该说我正在使用最新的 Nugget 版本的 Nhibernate。
我在这里错过了什么?
【问题讨论】:
-
Panorama.hbm.xml 有哪些值属性?构建操作并复制到输出目录?您必须在输出目录中搜索该文件
-
设置为嵌入式资源并始终复制
-
您可以将 Build Action 属性更改为“content”吗?当你编译它时,用你的 xml 配置文件在输出目录中创建一个文件夹
标签: c# nhibernate