【发布时间】:2010-10-20 16:24:42
【问题描述】:
我有机会开发一个稍微复杂的项目,并且一直在研究我可以用来解决这个项目的各种方法。通常我会使用传统的 3 层方法,但在花了一些时间查看各种选项之后,我有一个预感,某种 ORM 可能更合适,我正在考虑使用 nHibernate。但是,我正在寻找有关实施 nHibernate 的一些指导,更具体地说,我将如何构建我的 BL 和 DAL 与 nHibernate。
使用 nHibernate,我将创建我的对象(或 DTO?)并在我的 DAL 中使用 nHibernate 方法进行我的 CRUD 交互。但我无法理解的是,在 DAL 中定义的对象可能会更好地位于 BL 中,即可以轻松执行验证和其他内容的地方,我只使用来自各种 ObjectFactory/ObjectRepositories 的 DAL .不幸的是,我读过的许多文章似乎都没有提到或绕过这一点,我有点困惑。
在 3 层系统中使用 nHibernate 时,更容易接受或更容易的实施方法是什么?或者,从数据层到表现层通过业务层暴露对象的常规方法是什么?
【问题讨论】:
-
FWIW 在您的决策过程中要非常小心,因为如果您失败,它可能会对您的职业生涯产生长期影响。我在 NHibernate 方面拥有超过一年的经验,在我使用 NHibernate 而非普通应用程序的生产中拥有完整的企业应用程序之前的两年。如果有机会我本可以早点完成,我相信我会做的,但事后看来,我认为在我拥有近 2 年的 NHibernate 经验之前,我无法让该项目成功.
-
那么我在这里寻找什么样的陷阱? nHibernate 的想法是总体上节省时间并减轻问题而不是增加问题。 Atm,我知道使用 WCF 会破坏 nHibernate 的一些功能,但是使用 Respository 模式和 DTO 解决了这个问题,我的计划是在 BL 中定义我的业务对象以及映射文件,然后在 DAL 中使用 Respository 模式,这是个好计划吗?
-
我对 nhibernate 印象深刻,我们现在有一个中等到轻度复杂的项目 (asp.net MVC) 在上面运行,但它需要一些时间才能使 hql 正确。 (有时我们不得不作弊并使用原始 SQL - 由于缺乏知识)我还使用了经典的映射/实体绑定和旧的 skool php/asp 和 sql spagetti,在其他项目中我们尝试了 ADO.NET 然后Java 数据对象。现在是给我印象最深的 Nhibenrate。
标签: c# asp.net nhibernate orm