c# - NHibernate 除了存储过程什么都没有

标签 c# nhibernate stored-procedures nhibernate-mapping

我希望在调用 ISession.Get 时让 NHibernate 调用存储过程,通过键来获取实体,而不是使用动态 SQL。

我们一直在使用 NHibernate 并允许它生成用于查询和插入/更新/删除的 SQL,但现在可能必须将我们的应用程序部署到要求我们使用存储过程进行所有数据库访问的环境。我们可以在 .hbm.xml 映射文件中使用 sql-insert、sql-update 和 sql-delete 进行插入/更新/删除。我们的 hql 和条件查询必须替换为存储过程调用。

但是,我还没有弄清楚如何强制 NHibernate 使用自定义存储过程通过实体的键来获取实体。我仍然希望能够调用 ISession.Get,如下所示:

using (ISession session = MySessionFactory.OpenSession())
{
    return session.Get<Customer>(customerId);
}

还有延迟加载对象,但我希望 NHibernate 调用我的“GetCustomerById”存储过程而不是生成动态 SQL。

这可以做到吗?

考虑到我们必须支持的新环境,NHibernate 可能不再适合。

最佳答案

我自己没有尝试过,但你可能想看看native sql and custom loader概念。

这是 Ayende Rahien 写的一篇好文章:Using NHibernate With Stored Procedures

这是 Scott McMaster 基于 NH beta 版本的另一个更容易理解的版本:Stored Procedures in NHibernate

关于c# - NHibernate 除了存储过程什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481494/

相关文章:

c# - 构建整个解决方案,但只为一个项目添加全局条件编译符号

c# - ASP.NET 登录控件 - 我可以将 FailureText 添加为 ValidationSummary 中的一个项目吗?

nHibernate 不在命令行上运行的 MSTests 中创建 Oracle 驱动程序

c# - 使用 IDictionary<TKey,TValue> 映射与 FluentNHibernate 的三元关联

c# - LINQ 计算链接表中的行数

sql - 如何从映射表中不包含的两个表中选择值?

c# - 当值无效时.NET MVC 客户端验证不显示属性消息

c# - C# 中的动态类型

sql - 使用 squirrel 的 SQL 中的 DB2 存储过程。无法循环播放

mysql - mysql 控制台中程序执行时间的差异