如何在N层架构中维护交易

时间:2009-11-24 05:16:14

标签: asp.net architecture transactions n-tier-architecture

我正在开发N-Tier架构中的应用程序。众所周知,我们需要在插入/更新/删除操作时实现事务。请告诉我如何在N-Tier架构中使用c#.net中的事务。 我的架构是这样的 Applicationform-> middle_Layre->厂位于> DataAccessLayre-> StoredProcedure->表 在应用程序中我创建了middleLayer的对象并在中间层的Insert / update / delete函数中传递数据。 我在factoryclass中创建sqlcommand的对象并填充我从中间层获取的数据并将该对象os sqlcommand传递给DAL。

3 个答案:

答案 0 :(得分:7)

以下是您可以遵循的代表性软件层模式:

Database <-> DAL <-> Repository <-> BLL <-> Controller <-> View Model <-> UI

其中

DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer*

在此模型中,事务发生在存储库中,其中安排了“工作单元”。通常,这通过从DAL请求数据,对其执行工作以及保存更改来实现。 DAL通常会围绕您的工作单位进行交易。

数据库,DAL,存储库和BLL共同形成了MVC(模型 - 视图 - 控制器)架构中的模型。所有业务逻辑和数据操作都在模型中进行。控制器充当模型和视图模型/ UI之间的中间人,它们共同形成视图。

存储库是您设置“工作单元”的地方。

* <子>可选

答案 1 :(得分:2)

只要您的代码在同一台机器上运行,层之间没有任何WCF或Web Service调用,您就可以使用TransactionScope。

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx

只需将您希望在事务范围内进行的调用放在事务范围内。

答案 2 :(得分:1)

另一种选择是将逻辑放在存储过程中。这样,您的DAL会对数据库进行单次调用,并在失败时回滚。