微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我已经阅读了有关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:\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,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 @R_947_4045@ion ===
        LOG: User = dev-dsk02\ademar.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:\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,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:\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:

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐