Fluent nHibernate 错误 - 无法编译映射文档:(XmlDocument)

发布于 2024-11-28 15:38:51 字数 7633 浏览 1 评论 0原文

我已阅读有关 Fluent nHibernate 的所有问题,但没有找到答案。 我正在尝试此处运行入门教程,但收到此错误:

无法编译映射文档:(XmlDocument)

当我运行 CreateSessionFactory 时发生错误:

    private static ISessionFactory CreateSessionFactory()
    {
        return Fluently.Configure()
            .Database(SQLiteConfiguration.Standard
                .UsingFile(DBfile))
            .Mappings(m =>
                m.FluentMappings.AddFromAssemblyOf<Program>())
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
    }

有人遇到过这个吗?完整异常:

        NHibernate.MappingException was unhandled by user code
          Message=Could not compile the mapping document: (XmlDocument)
          Source=NHibernate
          StackTrace:
               at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 342
               at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 530
               at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 499
               at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1832
               at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1823
               at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1816
               at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 632
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 483
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 455
               at FluentNHibernate.PersistenceModel.Configure(Configuration cfg)
               at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg)
               at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
          InnerException: NHibernate.MappingException
               Message=persistent class FNHTest.Entities.Employee, FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found
               Source=NHibernate
               StackTrace:
                    at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 103
                    at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name, Mappings mappings, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 117
                    at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(IEntityMapping classMapping, PersistentClass model, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\ClassBinder.cs:line 35
                    at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\RootClassBinder.cs:line 19
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass rootClass, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 83
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 42
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 29
                    at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 522
               InnerException: System.IO.FileLoadException
                    Message=Could not load file or assembly 'FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
                    Source=mscorlib
                    FileName=FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
                    FusionLog==== Pre-bind state information ===
        LOG: User = dev-dsk02\ademar.gomes
        LOG: DisplayName = FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
         (Fully-specified)
        LOG: Appbase = file:///C:/code/GeneralTests/FluentNHibernate/FluentNHibernate/bin/Debug/
        LOG: Initial PrivatePath = NULL
        Calling assembly : NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
        ===
        LOG: This bind starts in default load context.
        LOG: Using application configuration file: C:\code\GeneralTests\FluentNHibernate\FluentNHibernate\bin\Debug\FluentNHibernate.vshost.exe.Config
        LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
        LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
        LOG: Attempting download of new URL file:///C:/code/GeneralTests/FluentNHibernate/FluentNHibernate/bin/Debug/FluentNHibernate.DLL.
        WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
        ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

                    StackTrace:
                         at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
                         at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
                         at System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
                         at System.Type.GetType(String typeName)
                         at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name, Boolean throwOnError) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 291
                         at NHibernate.Util.ReflectHelper.ClassForName(String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 181
                         at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 99
                    InnerException: 

I have read all questions about Fluent nHibernate and didnt find answer for that.
I am trying to run the Getting Started tutorial here and I get this error:

Could not compile the mapping document: (XmlDocument)

The error happens when I am running the CreateSessionFactory:

    private static ISessionFactory CreateSessionFactory()
    {
        return Fluently.Configure()
            .Database(SQLiteConfiguration.Standard
                .UsingFile(DBfile))
            .Mappings(m =>
                m.FluentMappings.AddFromAssemblyOf<Program>())
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
    }

Does anyone ever got this? Complete exception:

        NHibernate.MappingException was unhandled by user code
          Message=Could not compile the mapping document: (XmlDocument)
          Source=NHibernate
          StackTrace:
               at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 342
               at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 530
               at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 499
               at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1832
               at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1823
               at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1816
               at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 632
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc, String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 483
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 455
               at FluentNHibernate.PersistenceModel.Configure(Configuration cfg)
               at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg)
               at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
          InnerException: NHibernate.MappingException
               Message=persistent class FNHTest.Entities.Employee, FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found
               Source=NHibernate
               StackTrace:
                    at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 103
                    at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name, Mappings mappings, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 117
                    at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(IEntityMapping classMapping, PersistentClass model, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\ClassBinder.cs:line 35
                    at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\RootClassBinder.cs:line 19
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass rootClass, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 83
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 42
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 29
                    at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 522
               InnerException: System.IO.FileLoadException
                    Message=Could not load file or assembly 'FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
                    Source=mscorlib
                    FileName=FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
                    FusionLog==== Pre-bind state information ===
        LOG: User = dev-dsk02\ademar.gomes
        LOG: DisplayName = FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
         (Fully-specified)
        LOG: Appbase = file:///C:/code/GeneralTests/FluentNHibernate/FluentNHibernate/bin/Debug/
        LOG: Initial PrivatePath = NULL
        Calling assembly : NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
        ===
        LOG: This bind starts in default load context.
        LOG: Using application configuration file: C:\code\GeneralTests\FluentNHibernate\FluentNHibernate\bin\Debug\FluentNHibernate.vshost.exe.Config
        LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
        LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
        LOG: Attempting download of new URL file:///C:/code/GeneralTests/FluentNHibernate/FluentNHibernate/bin/Debug/FluentNHibernate.DLL.
        WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
        ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

                    StackTrace:
                         at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
                         at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
                         at System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
                         at System.Type.GetType(String typeName)
                         at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name, Boolean throwOnError) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 291
                         at NHibernate.Util.ReflectHelper.ClassForName(String name) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 181
                         at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 99
                    InnerException: 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缱倦旧时光 2024-12-05 15:38:51

问题是您在自己的 FluentNHibernate 版本中创建了 Employee 类,但执行时您使用了预编译的二进制文件。 NHibernate 尝试加载位于一个版本的 FNH 中的类,但加载另一个版本的 FNH 并抱怨 Assemblyversion 不匹配。将您的实体移至名称与 FluentNHibernate 不同的项目中。

The problem is that you created the class Employee in your own Version of FluentNHibernate but to execute you use the precompiled binaries. NHibernate tries to load the class located in one Version of FNH but loads another Version of FNH and complains about Assemblyversion mismatch. Move your entities to a project with a different name than FluentNHibernate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文