我正在为我的asp.net应用程序构建数据访问层。 我希望能够在不同的类之间共享连接以管理事务,但我不知道该怎么做。
示例:
我有2个班,Order和OrderDetail。
我将调用我的DAL Order类来获取新订单的SQL插入。
在Insert方法中,我想调用我的OrderDetail类来插入我的订单的详细信息,我会用相同的连接和事务来做。
有人可以建议我做一些架构设计吗? 或者也许有人可以在互联网上提供一些资源?
我希望这个例子很明确,我的英语太糟糕了!
感谢。
答案 0 :(得分:3)
我建议您专注于共享事务并保留现在的连接代码。汇集连接,因此打开连接应该对性能影响最小。您必须使用相同的事务,否则您的订单和订单详细信息的插入不是原子操作(如果您的代码中途失败,您最终会在数据库中输入不完整的订单)。
“分享”您的交易的最佳方式是使用TransactionScope
类。它创造了一个所谓的ambient transaction。您在环境事务范围内打开的每个SqlConnection
都会自动成为此事务的一部分。
如果您使用环境交易,则不再需要使用(或应该使用)SqlConnection.BeginTransaction
。