当然,我已经搜索了现有的主题,并尝试了其中提出的解决方案,但没有成功。也许有人可以提供一些额外的提示。
这是场景:
我将使用一个 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 将停止它的抗议:-)
再次问候和感谢