1

当然,我已经搜索了现有的主题,并尝试了其中提出的解决方案,但没有成功。也许有人可以提供一些额外的提示。

这是场景:

我将使用一个 NHibernate 项目来处理来自多个程序集的实体。应处理的程序集包含一些实体以及编译为嵌入式资源的映射文件:

namespace projectName.namespace
{
    public class Entity
    {
        public virtual Guid Id { get; set; }
        public virtual string IsoCode { get; set; }
    }
}

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="projectName.namespace.Entity,projectName">
        <id name="Id" column="EntityId">
          <generator class="guid" />
        </id>
    </class>
</hibernate-mapping>

在 NHibernate 项目中,程序集通过以下方式加载:

Assembly assembly = Assembly.Load(assemblySourcePath);

最后,当将映射添加到配置 NHibernate 时会抛出 MappingException:

configuration.AddAssembly(assembly);

我真的不知道如何解决这个问题。你们有人吗?

问候!

编辑 1 这是异常输出(翻译和总结):

NHibernate.MappingException: Could not compile the mapping document (the one from above)
persistent class "classname, assemblyname" not found -> System.IO.FileNotFoundException: file or assembly "assemblyname" or one of its dependencies not found.

编辑 2 我再次尝试使用 Fluent NHibernate。再次找到映射类,但没有找到实体:

persistent class dom.Project.BusinessEntities.Class, dom.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found

问候

编辑 3 解决方案我终于成功了,伙计们。解决方案非常简单,表明 nhibernate 可以加载任何程序集,无论是否在域根目录下。安装应加载到全局程序集缓存的程序集,nhibernate 将停止它的抗议:-)

再次问候和感谢

4

1 回答 1

0

Nhibernate 只能从位于当前应用程序域根路径下的程序集中加载实体。尝试将程序集放在 bin/Debug 下方的临时文件夹中并指向它 - 应该可以解决问题

于 2012-09-05T11:18:15.593 回答