加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#-4.0 – 流畅的nHibernate错误 – 无法编译映射文档:(XmlDocu

发布时间:2020-12-15 17:19:05 所属栏目:百科 来源:网络整理
导读:我已经阅读了有关Fluent nHibernate的所有问题,并没有找到答案. 我正在尝试运行入门教程 here,我收到此错误: 无法编译映射文档:(XmlDocument) 运行CreateSessionFactory时发生错误: private static ISessionFactory CreateSessionFactory() { return Flue
我已经阅读了有关Fluent nHibernate的所有问题,并没有找到答案.
我正在尝试运行入门教程 here,我收到此错误:

无法编译映射文档:(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:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 342
               at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument,String documentFileName) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 530
               at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 499
               at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 1832
               at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 1823
               at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader,String name) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 1816
               at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream,String name) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 632
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc,String name) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 483
               at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.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:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingBinder.cs:line 103
                    at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name,Mappings mappings,String errorMessage) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingBinder.cs:line 117
                    at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(IEntityMapping classMapping,PersistentClass model,IDictionary`2 inheritedMetas) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingClassBinder.cs:line 35
                    at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema,IDictionary`2 inheritedMetas) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingRootClassBinder.cs:line 19
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass rootClass,IDictionary`2 inheritedMetas) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingMappingRootBinder.cs:line 83
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema,IDictionary`2 inheritedMetas) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingMappingRootBinder.cs:line 42
                    at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingMappingRootBinder.cs:line 29
                    at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument,String documentFileName) in d:CSharpNHNHnhibernatesrcNHibernateCfgConfiguration.cs:line 522
               InnerException: System.IO.FileLoadException
                    Message=Could not load file or assembly 'FluentNHibernate,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,PublicKeyToken=null
                    FusionLog==== Pre-bind state information ===
        LOG: User = dev-dsk02ademar.gomes
        LOG: DisplayName = FluentNHibernate,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,PublicKeyToken=aa95f207798dfdb4.
        ===
        LOG: This bind starts in default load context.
        LOG: Using application configuration file: C:codeGeneralTestsFluentNHibernateFluentNHibernatebinDebugFluentNHibernate.vshost.exe.Config
        LOG: Using machine configuration file from C:WindowsMicrosoft.NETFrameworkv2.0.50727configmachine.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,StackCrawlMark& stackMark)
                         at System.RuntimeType.PrivateGetType(String typeName,StackCrawlMark& stackMark)
                         at System.Type.GetType(String typeName)
                         at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name,Boolean throwOnError) in d:CSharpNHNHnhibernatesrcNHibernateUtilReflectHelper.cs:line 291
                         at NHibernate.Util.ReflectHelper.ClassForName(String name) in d:CSharpNHNHnhibernatesrcNHibernateUtilReflectHelper.cs:line 181
                         at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName,String errorMessage) in d:CSharpNHNHnhibernatesrcNHibernateCfgXmlHbmBindingBinder.cs:line 99
                    InnerException:

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读