nia*_*her 0 c# data-access-layer .net-3.5 sql-server-2008
假设我们有一个DAL方法
public void BuyProduct(int productId, int quantity, int buyerId);
Run Code Online (Sandbox Code Playgroud)
在该方法中,我们需要调用2个存储过程:
创建2个SqlCommands是一个好习惯 - 每个存储过程一个并使用单个SqlConnection来执行这些命令?
要么
为每个SqlCommand创建单独的SqlConnection是否更好?
所以基本上我要问:在单个DAL方法中重复使用单个SqlConnection进行多个(2-4)SqlCommands是一个好习惯(显然在整个DAL中重用SqlConnection会很愚蠢)?
PS - 请不要问我为什么不能将2个存储过程合并为1.我的答案是 - 分离关注点.
真正的问题不是连接,而是交易.当逻辑操作涉及多个DAL物理操作时,通常它们必须是转换的一部分.除非corectness是可选的...如果一个事务跨越多个连接,那么它必须被提升到一个分布式事务,带来灾难性的perofrmance结果.因此,在设计DAL时,始终能够将事务关联到连接.这通过DAL API设计涟漪,因为通常结果是必须将连接和事务对象明确地分发给DAL方法,作为单独的参数或作为聚合它们的"上下文"对象.
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |