我正在一個存儲過程對一個項目設置NHibernate和我有,由於其複雜性,我們將離開作爲存儲過程的幾個疑問。我想能夠使用NHibernate調用sprocs,但遇到了一個我無法弄清的錯誤。由於我使用流利NHibernate我使用混合模式映射推薦here。但是,當我運行應用程序時,我得到一個「命名查詢未知:AccountsGetSingle」異常,我無法弄清楚原因。我想我的HBM映射可能有問題,因爲我不太熟悉它們,但我不確定。命名查詢未知錯誤試圖調用使用功能NHibernate
我的NHibernate的配置代碼:
private ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString((conn => conn.FromConnectionStringWithKey("CIDB")))
.ShowSql())
.Mappings(m =>
{
m.HbmMappings.AddFromAssemblyOf<Account>();
m.FluentMappings.AddFromAssemblyOf<Account>();
})
.BuildSessionFactory();
}
我的hbm.xml文件是:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<sql-query name="AccountsGetSingle">
<return alias="Account" class="Core, Account"></return>
exec AccountsGetSingle
</sql-query>
</hibernate-mapping>
我所在的地方調用存儲過程的代碼如下所示:
public Account Get()
{
return _conversation.Session
.GetNamedQuery("AccountsGetSingle")
.UniqueResult<Account>();
}
任何想法或想法,將不勝感激。謝謝。
更新: @ kibbled_bits的建議,讓我說,我在尋找(下能夠調用從NHibernate的存儲過程)的最終結果,但我仍然不知道爲什麼我沒有按上面所列的方法」工作。我仍然很好奇,因爲它可能爲未來的問題提供有價值的見解。
我不認爲我知道你可以使用.CreateSQLQuery()調用存儲過程,儘管它非常有意義。當我在早上上班時,我會給它一個鏡頭。 – Hamman359 2010-04-04 18:28:23
這工作完美。我能夠成功地調用我的存儲過程而沒有任何問題。謝謝。 – Hamman359 2010-04-06 14:26:49
+1真棒醬。其他答案涉及映射hbm片段。這好多了。 – 2012-08-22 15:40:57