【问题标题】:MappingException was unhandled: NHibernateMappingException 未处理:NHibernate
【发布时间】:2011-03-23 17:06:08
【问题描述】:

我正在尝试从书 NHibernate in Action 中了解 NHibernate,并尝试编译和运行第一个示例给我以下异常:

Could not compile the mapping document:

命名空间.FolderName.ClassName.hbm.xml

内部异常是

{"<hibernate-mapping xmlns='urn:hibernate-mapping-2.2'> was not expected."}

这是我的映射文件:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:hibernate-mapping-2.2"
                   auto-import="true">
  <class name="Namespace.Folder.ClassName,Namespace.Folder" lazy="false">
    <id name="id" access="field">
      <generator class="native" />
    </id>
    <property name="name" access="field" column="name"/>
    <many-to-one access="field" name="manager" column="manager"
                 cascade="all"/>
    </class>
</hibernate-mapping>

当我尝试如下创建会话时会发生这种情况:

static ISession OpenSession()
        {
            if (factory == null)
            {
                Configuration c = new Configuration();
                c.AddAssembly(Assembly.GetCallingAssembly());
                factory = c.BuildSessionFactory();
            }
            return factory.OpenSession();
        }

异常由以下行引发:

c.AddAssembly(Assembly.GetCallingAssembly());

这是整个异常堆栈跟踪:

**

NHibernate.MappingException 是 未处理的消息=无法编译 映射文件: DataGenerator.HibernateMapper.Individual.hbm.xml 来源=NHibernate StackTrace: 在 NHibernate.Cfg.Configuration.LogAndThrow(异常 例外)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 340 在 NHibernate.Cfg.Configuration.LoadMappingDocument(XmlReader hbmReader,字符串名称)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1783 在 NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader,字符串名称)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1813 在 NHibernate.Cfg.Configuration.AddInputStream(流 xmlInputStream,字符串名称)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 630 在 NHibernate.Cfg.Configuration.AddResource(字符串 路径,装配装配)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 668 在 NHibernate.Cfg.Configuration.AddAssembly(Assembly 组装)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 761 在 DataGenerator.Program.OpenSession() 中 C:\文档和 Settings\user1\Desktop\DataGeneration\DataGenerator\DataGenerator\Program.cs:line 46 在 DataGenerator.Program.CreateIndividualAndSaveToDatabase() 在 C:\Documents 和 Settings\user1\Desktop\DataGeneration\DataGenerator\DataGenerator\Program.cs:line 29 在 C:\Documents 中的 DataGenerator.Program.Main() 和 Settings\user1\Desktop\DataGeneration\DataGenerator\DataGenerator\Program.cs:line 16 在 System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,字符串 [] 参数) 在 System.AppDomain.ExecuteAssembly(字符串 汇编文件,证据 装配安全,字符串 [] 参数) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(对象 状态) 在 System.Threading.ExecutionContext.Run(ExecutionContext 执行上下文,上下文回调 回调,对象状态,布尔值 忽略SyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext 执行上下文,上下文回调 回调,对象状态) 在 System.Threading.ThreadHelper.ThreadStart() 内部异常: System.InvalidOperationException Message=XML 文档 (1, 2) 中存在错误。 源=System.Xml 堆栈跟踪: 在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,字符串编码样式, XmlDeserializationEvents 事件) 在 System.Xml.Serialization.XmlSerializer.Deserialize(TextReader 文本阅读器) 在 NHibernate.Cfg.NamedXmlDocument..ctor(字符串 名称,XmlDocument 文档)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\NamedXmlDocument.cs:line 27 在 NHibernate.Cfg.Configuration.LoadMappingDocument(XmlReader hbmReader,字符串名称)在 d:\CSharp\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1774 内部异常:System.InvalidOperationException 消息= 是 没想到。 来源=2p514b3b 堆栈跟踪: 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderHbmMapping.Read109_hibernatemapping() 内部异常:

**

有人可以给我一些关于这里发生了什么的指示吗?

谢谢

【问题讨论】:

  • @downvoter - 想解释一下原因吗?
  • @sc_ray(我不是反对者:))您应该在异常消息中添加更多内容来解释为什么它无法编译:也检查 InnerException。
  • @Felice Pollano - 我将粘贴详细的异常消息。对此感到抱歉。
  • @Felice Pollano - 我粘贴了内部异常。我不确定是否应该使用除 2.2 之外的其他值?
  • 你能告诉我们你的映射文件吗?

标签: .net visual-studio-2010 nhibernate c#-4.0


【解决方案1】:

确保映射文件的构建操作设置为“嵌入式资源”。

编辑:

试试

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">

注意 nhibernate 中的 n

【讨论】:

  • 谢谢。映射文件的构建操作设置为嵌入式资源,它仍然抛出此异常。
  • 它应该已经是“嵌入式资源”,因为他收到了异常。如果不是没有任何异常发生。
猜你喜欢
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多