5

所以我们正在构建一个应用程序

  • UI 层(Web、移动、Ajax 客户端等)
  • 服务/API 层
  • 业务逻辑层
  • 数据访问层

我们的目标是拥有从服务层到 DAL 的实体框架依赖关系。这意味着服务层将只接受和返回 POCO(普通的旧 CLR 对象)。

我们目前正在做的是手动编写服务层和业务逻辑层之间的映射层,将 POCO 转换为 EF 实体,反之亦然。

所以简而言之,页面有表单,表单有代码隐藏,它获取表单内容,将它们填充到 POCO 中,然后将其发送到服务层。服务层转换为 EF 实体,将其发送到业务逻辑层,业务逻辑层对实体执行某些转换,然后与 DAL 交互以使其持久化。

是的,它有点乏味,但我们想知道是否有更好的方法?

的,我知道有人发布了一个 EF Poco 适配器,但它都是用 C# 编写的,我们更喜欢 VB.NET 解决方案。

的,切换到 NHibernate 是最后的选择,因为我们已经深入开发周期。

4

2 回答 2

2

您应该在 POCO 上执行业务逻辑。ORM 的全部目的是它是一个实现细节。业务逻辑应该在领域模型和领域服务中实现——在业务应用程序中,“领域”意味着“业务”。DAL 应该在那里接受 POCO 并将其持久化 - 在您的情况下,这意味着将其映射到并持久化 EF 实体。

无论如何,这就是理论/ NHibernate 模型。

于 2008-10-11T00:16:45.750 回答
1

你能忍受对 EF接口的服务层的依赖吗?您可以实施 IPOCO

甚至有一种方法可以自动完成

于 2008-10-15T15:19:24.070 回答