Ham*_*359 11 nhibernate nhibernate-mapping fluent-nhibernate
我正在为一个项目设置NHibernate,我有一些查询,由于它们的复杂性,我们将作为存储过程离开.我希望能够使用NHibernate来调用sprocs,但遇到了一个我无法弄清楚的错误.由于我正在使用Fluent NHibernate,我正在使用此处推荐的混合模式映射.但是,当我运行应用程序时,我得到一个"命名查询未知:AccountsGetSingle"异常,我无法弄清楚原因.我想我的HBM映射可能有问题,因为我对使用它们并不是很熟悉,但我不确定.
我的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();
}
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
我调用sproc的代码如下所示:
public Account Get()
{
return _conversation.Session
.GetNamedQuery("AccountsGetSingle")
.UniqueResult<Account>();
}
Run Code Online (Sandbox Code Playgroud)
任何想法或想法将不胜感激.谢谢.
更新: @kibbled_bits的建议让我得到我正在寻找的最终结果(能够从NHibernate调用存储过程),但我仍然不知道为什么我上面列出的方法不起作用.我仍然很好奇为什么,因为它可以为未来的问题提供有价值的见解.
Sco*_*ite 24
当我必须使用存储过程(只有在我被迫时才会发生).我更喜欢使用以下方法来执行它们:
var list = Session.CreateSQLQuery("exec GetCustomerByNaturalKey ?, ?")
.AddEntity(typeof(Customer))
.SetInt32(0, customerNo)
.SetDateTime(1, createdDate)
.List<Customer>();
Run Code Online (Sandbox Code Playgroud)
.SetInt32/DateTime的第一个参数只是参数的序号位置.
| 归档时间: |
|
| 查看次数: |
13697 次 |
| 最近记录: |