Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate.MappingException导入Visual Studio 2012时发生异常_C#_Nhibernate - Fatal编程技术网

C# NHibernate.MappingException导入Visual Studio 2012时发生异常

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的项目,该项目在我的机器上运行良好,带有Visual Studio 2010。当我将该项目导入Visual Studio 2012时,我遇到了NHibernate.MappingException

对于所有.hbm.xml文件,.hbm.xml被设置为嵌入式资源,而copy to output目录被设置为copy always

该项目在VS 2010下运行,因此我不确定如何解决这个问题。



包含所有所需信息的内部异常如下:

错误: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">