Linq to sql - 对同一个事务执行多个查询

时间:2010-11-02 19:23:30

标签: c# asp.net linq concurrency

我正在使用linq to sql在合约表中创建条目。

需要有条件地从一系列值中为一列分配一个应用程序编号。

我想简单地增加最大现有值,但它是一个多用户应用程序,我担心多个合同会收到相同的应用程序编号,如果它们发生得太近了。

有没有办法强制整个事情使用同一个事务,或者在同一个提交期间执行这两个事务?

4 个答案:

答案 0 :(得分:2)

将所有代码放入TransactionScope

using (var transaction = new TransactionScope())
{

     // Perform the changes


     transaction.Complete();
}

有关TransactionScope课程的详情,请参阅http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx

答案 1 :(得分:2)

您可以创建SqlConnectionSqlTransaction并将其提供给LINQ to SQL DataContext

using (var con = new SqlConnection(...))
{
    con.Open();

    using (var tran = con.BeginTransaction())
    {
        using (var db = new YourDataContext(con))
        {
            // This line is needed in .NET 3.5 (not in 4.0)
            db.Transaction = tran;

            // Do your stuff

            db.SubmitChanges();

            // Do more stuff

            db.SubmitChanges();
        }
    }
}

答案 2 :(得分:0)

您可以使用存储过程来处理一次交易中所需的所有操作。

答案 3 :(得分:0)

我不确定我是否理解这个问题,但是当您调用提交更改时,它会将所有更改包含在一个事务中 - http://msdn.microsoft.com/en-us/library/bb399378.aspx