【问题标题】:Best project pattern to have a "unitOfWork" at the business layer在业务层拥有“unitOfWork”的最佳项目模式
【发布时间】:2012-01-21 06:05:35
【问题描述】:

我有一个 C# .NET 桌面项目,其结构包括:gui、业务和数据访问层。每个业务层类代表数据库的一个实体。我正在使用 linq 访问数据库。但是今天项目的实现方式不允许原子地进行很多操作,我需要在业务层完成。

我搜索了一些设计模式,发现 unitOfWork 使数据层中的所有操作都在同一上下文中并且在所有更改都提交之后。这将有助于使操作原子化。但问题是我想要做的操作需要在之前进行验证,这意味着,我需要从业务层调用一个方法来进行验证,而不是从数据层调用方法。业务层中的这个调用会创建另一个 unitOfWork,因此会创建另一个上下文,破坏我正在尝试执行的更大操作的原子性。

问题是:在同一 linq 上下文中从业务层调用业务层的一个或多个方法的最佳项目模式是什么?

【问题讨论】:

    标签: linq linq-to-sql design-patterns unit-of-work atomic


    【解决方案1】:

    一种方法是:

    • 在您的业务层之上创建一个服务层。
    • 此服务层包含 2 个服务(可以是真正的 WCF 服务或只是常规 C# 类):一个用于读取,一个用于写入。
    • 读取服务不是事务性的,它只包含执行查询(即读取数据)的方法。
    • 写入服务是事务性的;它的所有方法要么创建事务上下文,要么遵循工作单元模式。
    • 在其业务层执行 C/U/D 操作之前,写入服务会访问读取服务以进行验证。

    【讨论】:

    • 好像不错。这个项目模式有名字吗?我想对此进行更多搜索?谢谢!
    • 它松散地基于 CQRS:命令/查询职责分离。
    猜你喜欢
    • 2017-01-07
    • 2010-10-13
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多