我正在使用linq to sql在合约表中创建条目。
需要有条件地从一系列值中为一列分配一个应用程序编号。
我想简单地增加最大现有值,但它是一个多用户应用程序,我担心多个合同会收到相同的应用程序编号,如果它们发生得太近了。
有没有办法强制整个事情使用同一个事务,或者在同一个提交期间执行这两个事务?
答案 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)
您可以创建SqlConnection
和SqlTransaction
并将其提供给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