C# NHibernate.MappingException导入Visual Studio 2012时发生异常
我有一个实现NHibernate的项目,该项目在我的机器上运行良好,带有Visual Studio 2010。当我将该项目导入Visual Studio 2012时,我遇到了NHibernate.MappingException 对于所有.hbm.xml文件,.hbm.xml被设置为嵌入式资源,而copy to output目录被设置为copy always 该项目在VS 2010下运行,因此我不确定如何解决这个问题。C# NHibernate.MappingException导入Visual Studio 2012时发生异常,c#,nhibernate,C#,Nhibernate,我有一个实现NHibernate的项目,该项目在我的机器上运行良好,带有Visual Studio 2010。当我将该项目导入Visual Studio 2012时,我遇到了NHibernate.MappingException 对于所有.hbm.xml文件,.hbm.xml被设置为嵌入式资源,而copy to output目录被设置为copy always 该项目在VS 2010下运行,因此我不确定如何解决这个问题。 包含所有所需信息的内部异常如下: 错误:NHibernate.Mappin
包含所有所需信息的内部异常如下: 错误:NHibernate.MappingException:无法编译映射 文档:hibernateeexample.Domain.Dairy.hbm.xml--> NHibernate.MappingException:持久类 HibernateExample.Domain.Dairy,未找到HibernateExample---> System.TypeLoadException:无法加载类型 'HibernateExample.Domain.Dairy'来自程序集'HibernateExample, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null' 在工厂配置期间,NHibernate读取所有嵌入的资源,包括第三个(从问题的顶部):
因此,问题很清楚。没有可用的hibernateeexample.Domain.Dairy
类(未部署、输入错误或名称空间不正确)。好消息或消息是您的映射已被找到并解析
尝试确保应用程序能够访问映射的类映射异常说明了什么?@SimonWhitehead,我在新编辑中添加了上面的堆栈跟踪。您的
Dairy
类是否在NHibernateeExample.Domain
命名空间中定义?@SimonWhitehead,程序集是HibernateExample,因此它是在HibernateExample.Domain命名空间中定义的。如果映射文档作为资源嵌入,通常不应将它们复制到输出目录。我已检查并重新检查了命名空间,为什么它会在VS 2010中工作而不是VS 2012中工作,而且根本没有对代码进行任何更改?看起来您缺少引用。异常非常简单:映射的内容无法(通过反射)找到<代码>持久类HibernateExample.Domain.Dairy,HibernateExample未找到意味着,在应用程序域(通常位于bin中的dll)中没有Phill建议的类,缺少引用可能是“部署”跳过的原因。因此,我们需要的(不是引用本身),而是“POCO实体”程序集已真正部署,并可在应用程序域中使用
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
<property name="connection.connection_string">Data Source=FirstSample.sdf</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="HibernateExample" namespace="HibernateExample.Domain" >
<class name="Grains" table="Products">
<id name="Id" type="integer">
<generator class="identity"/>
</id>
<property name="Name" type="string"/>
<property name="Category" type="string"/>
<property name="Discontinued" />
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="HibernateExample" namespace="HibernateExample.Domain" >
<class name="Dairy" table="Products">
<id name="Id" type="integer">
<generator class="identity"/>
</id>
<property name="Name" type="string"/>
<property name="Category" type="string"/>
<property name="Discontinued" />
</class>
</hibernate-mapping>
<?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.driver_class"> NHibernate.Driver.SqlServerCeDriver</property>
<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.connection_string">Data Source=FirstSample.sdf;</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
<connectionStrings>
<add name="testconnectionstring"
connectionString="Data Source=|DataDirectory|\FirstSample.sdf;Integrated Security=True"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urnchemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-9.0.242.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
A first chance exception of type 'System.TypeLoadException' occurred in mscorlib.dll
A first chance exception of type 'System.TypeLoadException' occurred in NHibernate.dll
A first chance exception of type 'NHibernate.MappingException' occurred in NHibernate.dll
A first chance exception of type 'NHibernate.MappingException' occurred in NHibernate.dll
A first chance exception of type 'NHibernate.MappingException' occurred in NHibernate.dll
A first chance exception of type 'NHibernate.MappingException' occurred in NHibernate.dll
Error: NHibernate.MappingException: Could not compile the mapping document: HibernateExample.Domain.Dairy.hbm.xml ---> NHibernate.MappingException: persistent class HibernateExample.Domain.Dairy, HibernateExample not found ---> System.TypeLoadException: Could not load type 'HibernateExample.Domain.Dairy' from assembly 'HibernateExample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type)
at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name, Boolean throwOnError) in p:\nhibernate-core\src\NHibernate\Util\ReflectHelper.cs:line 308
at NHibernate.Util.ReflectHelper.ClassForName(String name) in p:\nhibernate-core\src\NHibernate\Util\ReflectHelper.cs:line 181
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 99
--- End of inner exception stack trace ---
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 105
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name, Mappings mappings, String errorMessage) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 117
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(IEntityMapping classMapping, PersistentClass model, IDictionary`2 inheritedMetas) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\ClassBinder.cs:line 32
at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\RootClassBinder.cs:line 21
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass rootClass, IDictionary`2 inheritedMetas) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 84
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 42
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) in p:\nhibernate-core\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 31
at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 523
--- End of inner exception stack trace ---
at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 342
at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 530
at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 500
at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 1865
at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 1857
at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 1850
at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 652
at NHibernate.Cfg.Configuration.AddResource(String path, Assembly assembly) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 690
at NHibernate.Cfg.Configuration.AddAssembly(Assembly assembly) in p:\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 769
at HibernateExample.NHibernateTest.NHibernateHelper.OpenSession() in c:\Users\Fabian\Documents\Visual Studio 2010\Projects\NHibernate\HibernateExample\NHibernateTest\NHibernateHelper.cs:line 31
Error: Could not compile the mapping document: HibernateExample.Domain.Dairy.hbm.xml
A first chance exception of type 'System.NullReferenceException' occurred in HibernateExample.exe
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="HibernateExample"
namespace="HibernateExample.Domain" >
<class name="Dairy" table="Products">