NHibernate架构和业务逻辑

时间:2010-06-16 23:24:13

标签: nhibernate

刚开始使用NHibernate和Fluent NHibernate开发一个项目用于映射,我很困惑。由于该项目在接下来的几个月会变得更加复杂,我希望将代码结构化为逻辑层,例如持久层和业务逻辑层。

我有一个名为Patient的业务对象,其中包含逻辑和验证。

  1. 患者类是否应该使用Fluent NHibernate映射类进行映射?
  2. 或者映射类是否应映射到某些数据访问对象,例如PatientDAO和Patient类以某种方式使用PatientDAO?
  3. 如果是1,是不是我的业务逻辑层和持久层相同? 如果2,两层是单独的项目,我应该BL项目包含Patient对象和一些IPatientDAO和PL有PatientDAO对象吗?

    或者我做错了吗? : - )

1 个答案:

答案 0 :(得分:3)

您应该使用Fluent NHibernate映射您的实体,因为这是您从数据库结构映射到对象模型的位置。

至于DAO,这是个人品味的问题。一般人喜欢使用某种类型的DAO(尽管人们喜欢这些天称它们为存储库)。这些类将利用NHibernate ISession从数据库读取/写入数据。通常,当前使用这些方法的方法是定义一个通用接口Get<T>(int id)GetAll<T>(),'Delete()type methods defined to handle CRUD ops, with T`是实体类型。

但是,也可以在表示代码中直接使用ISession,因为它已经提供了读/写数据的抽象。如果你走这条路,那么你将NHibernate暴露给你的应用程序的其余部分,但你也删除了一个抽象级别。

对于哪一层,NHibernate是你的持久层的95%-100%。你可以在它上面添加一些你自己的抽象来创建一个让你开心的API,但这完全取决于你。