我当然搜索了现有主题,并尝试了其中提供的解决方案,但没有成功。也许有人可以提供一些额外的提示。
以下是该方案:
我将使用一个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将停止抗议: - )
再次问候并再次感谢
答案 0 :(得分:0)
Nhibernate只能从位于当前应用程序域根路径下的程序集中加载实体。尝试将程序集放在bin / Debug下面的临时文件夹中并指向它 - 应该解决问题