在使用NHibernate时,在哪里放置查询业务规则?

时间:2010-09-13 17:01:20

标签: c# .net asp.net asp.net-mvc nhibernate

NHibernate还是新手。我正在使用NHibernate 2.1.2和Linq提供程序。

我想知道我应该把业务规则逻辑放在哪里。例如,我有一个名为Service with DateTime属性的实体。在我的网络应用程序中,我只想显示/使用DataTime不到4周的服务。我应该把这条规则放在哪里?

我开始用一个封装了那个逻辑的IEnumerable GetServices()方法构建一个ServiceRepository,想着“哦!每次我需要一个服务,我都会去那个方法!”

当然,当我需要加载服务的子对象时会出现问题。在查询我的数据库时,我不希望在我的存储库中对同一方法进行大量排列。事实上,我真的根本不想使用存储库,因为我很努力地注意Ayende's Advice,因为我还是NHibernate的新手。

我喜欢让对象从数据库中指定我需要的东西,我可以将业务规则封装在其中。我认为它的linq部分是让我失望的原因。

3 个答案:

答案 0 :(得分:0)

您不需要其他方法来“加载子对象”。你可以依靠关系和延迟加载。

这样,您的原始设计就有效了。

答案 1 :(得分:0)

看看Fabio Maulo的Enhanced Query Object。这展示了一种很好的方法来封装NHibernate查询,同时在如何实现它们方面提供了很大的灵活性。

答案 2 :(得分:0)

如果您在BLL中提及您的业务逻辑并且您的项目结构必须如下:

,那将会很好
  1. BLL(业务逻辑层)。 它包含 接口, 服务, 模型

  2. DLL(Dynmic link libery)。 它包含 Repsitory, Nhibernate映射类

  3. 3.Website。 (添加BLL,DLL引用)