Linq to sql 在Linq到sql中处理事务

Linq to sql 在Linq到sql中处理事务,linq-to-sql,asp.net-mvc-2,transactions,Linq To Sql,Asp.net Mvc 2,Transactions,我正在实现asp.NETMVCWeb应用程序,其中我使用LINQtoSQL操作数据库中的数据。但在我的一个操作中,我想通过引用前面的插入Id来插入多个相互依赖的表条目。所以我只是想知道如何处理事务,比如在ADO.net中开始事务、提交、回滚等等。如何管理这一点。如果插入操作中有一个在操作过程中崩溃了,那该怎么办? 注意:-我没有在这里使用存储过程。我正在使用Lambda表达式和方法。它们也在不同的管理器类中使用。 示例: 为了在SubjectManager类中创建Subject-used方法来插

我正在实现asp.NETMVCWeb应用程序,其中我使用LINQtoSQL操作数据库中的数据。但在我的一个操作中,我想通过引用前面的插入Id来插入多个相互依赖的表条目。所以我只是想知道如何处理事务,比如在ADO.net中开始事务、提交、回滚等等。如何管理这一点。如果插入操作中有一个在操作过程中崩溃了,那该怎么办? 注意:-我没有在这里使用存储过程。我正在使用Lambda表达式和方法。它们也在不同的管理器类中使用。 示例:
为了在SubjectManager类中创建Subject-used方法来插入Subject infor,该方法返回Subject Id。在此subjectid中,我将插入let say及其章节,并在manager类中使用另一个方法作为ChapterManager。它再次返回基于此章节Id的章节Id,插入章节的主题。在每个管理器类中,我为相同的主题创建dataContext对象。我在控制器的一个动作中控制所有这些。但担心交易管理。我在这里怎么用

为支持Neil的答案而删除的代码

DataContext已经包含一个嵌入式事务对象。例如,假设您正在为客户下新订单。您可以设置模型,以便以下代码通过一次提交更改同时更新Customer和Order表。只要两个表之间存在外键关系,嵌入的事务对象就会处理同一事务中的客户更新和订单插入。使用TransactionScope对象封装单个DataContext是多余的:

using (DataContext dc = new DataContext())
{
    Order order = new Order();

    order.ProductID = 283564;
    order.Quantity = 7;
    order.OrderDate = DateTime.Now;

    Customer customer = dc.Customers.Single(c => c.CustomerID == 6);

    customer.LastUpdate = order.OrderDate;
    customer.Orders.Add(order);

    dc.SubmitChanges();
}

谢谢,它适用于所有的数据操作吗?是的,TransactionScope中的所有内容都包装在一个事务中。唯一需要注意的是datacontext。我想你只能在一个范围内拥有一个。我将更新代码以显示更多信息。在同一DataContext块中调用多个SubmitChanges将遇到问题。内置的更改跟踪机制不能也不能保证更改后数据的完整性,因为更改后它不会更新对象。是的,尼尔,你是对的。我把你的答案投了高于我的答案的票,并删除了我的代码。谢谢:)