我工作的项目有一个非常复杂的业务和数据逻辑。我的数据库中有大约90个表和250个存储过程。
我在Nhibernate上看到了非常基本的样本,通过它们可以在数据库上执行操作。
我只是想知道我们是否有一个巨大的复杂逻辑,那么我们如何使用nhibernate。
目前在某些情况下我处理存储过程级别的业务逻辑,所以如果稍微改变只是在存储过程集中进行一些更改就适合我。但是,如果我使用Nhibernate,我如何使用存储过程并创建复杂的情况对我有用。
我可以在C#中获取使用nhibernate的示例代码,并包含复杂的真实场景。
答案 0 :(得分:3)
诸如NHibernate之类的ORM的主要目标是从应用程序抽象数据库访问并使其与数据库无关。在存储过程中具有业务逻辑意味着使用ORM不会带来任何价值。使用普通的ADO.NET会更直接和有益。使用NHibernate调用纯SQL或存储过程的恕我直言是没用的。您只需在应用程序中添加一个不会带来任何价值的附加层。
但是,如果您将业务逻辑从数据库移开并拥有一个漂亮的对象模型,那么ORM可能真的有助于将此模型映射到数据库表。
答案 1 :(得分:1)
不仅可以通过NHibernate调用存储过程,而且ORM使您能够以这样的方式调用这些过程,使得它们的结果集自动转换为特定的实体类型。
有关示例,请参阅http://softwaredevscott.spaces.live.com/blog/cns!1A9E939F7373F3B7!241.entry。具体来说,您需要使用NHibernate映射文件的<sql-query>
元素来设置存储过程的名称,输入参数和返回类型。然后,您可以使用您提供的名称在代码中引用此存储过程。
我不相信你可以赤裸裸地调用存储过程。必须在NHibernate映射文件中的某处给它们一个名字。
至于复杂性,我完全接受了你所面临的挑战。我正在给自己的项目NHibernate一个测试运行来测量它的性能,以及当你需要灵活性时它会给你带来多少麻烦。到目前为止,我没有遇到任何问题。