我正在一个存储过程对一个项目设置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