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