我已經搜索了現有的主題,當然還嘗試了其中提供的解決方案,但沒有成功。也許有人可以提供一些額外的提示。已修復:從外部程序集加載NHibernate映射會導致異常
下面是這種情況:
我要使用一個NHibernate的項目從幾個組件的處理實體。這應被處理的組件包括一些實體以及映射文件編譯爲嵌入的資源:添加映射時
Assembly assembly = Assembly.Load(assemblySourcePath);
最後:
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的項目,然後將組件通過加載到配置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 我有另一個嘗試用流利的NHibernate的。映射類再次獲得發現的,而不是實體:
persistent class dom.Project.BusinessEntities.Class, dom.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found
問候
編輯3溶液 我終於成功了,夥計們。解決方案非常簡單,並且顯示nhibernate可以加載任何程序集,無論是否在域根目錄下。 安裝該應加載到全局程序集緩存和NHibernate將停止其抗議大會:-)
的問候,並再次感謝
發佈完整的異常總是有幫助的。 Exception.ToString()是你的朋友。 –
我的壞,科爾,你說得對,當然..只是第二個 – mitch182
讓我困惑的是,hibernate首先在程序集中找到映射文件,但是沒有找到程序集本身。 nhibernate在哪裏搜索程序集?我是否必須更改映射文檔中的彙編鏈接? – mitch182