LINQ to SQL读取id只是插入和回滚

时间:2012-03-15 20:12:05

标签: .net linq-to-sql

这是我的问题, 我想从我刚插入的内容中获取ID,并将其用作另一个表的外键。

Records record = new Records {
  field1 = 1;
  field2 = 2; 
}; 
DataContext.Records.InsertOnSubmit(record); 
DataContext.SubmitChanges(); // transaction 1
int recordID = record.ID;

tblDEMO demo = new tblDEMO {
  rID = recordID
  field1 = 1;
}; 
DataContext.tblDEMOs.InsertOnSubmit(demo); 
sparxdc.SubmitChanges(); // transaction 2

我的问题是,如果我这样做,它将创建2个交易。如果第二个失败,我怎样才能回滚第一个?

4 个答案:

答案 0 :(得分:0)

如果您在一次交易中同时提交两个提交:

using (TransactionScope scope = new TransactionScope())
{
    try
    {
        perform first submit
        perform second submit
    }
    finally
    {
        scope.Complete();
    }
}

答案 1 :(得分:0)

添加任意数量的InsertOnSubmit / Delete方法调用,并在完成所有更改后调用SubmitChanges。在一个TransactionScope中手动创建Transaction。

答案 2 :(得分:0)

如果您的实体是相关的(如果数据库中存在关系),您可以这样做

var order = new Order();
Order.Customer = new Customer(); // here both order and customer represent your entities
dbContext.InsertOnSubmit();
dbContext.SubmitChanges();

你能提供更多信息吗?

答案 3 :(得分:0)

好的,我知道现在该做什么。 插入与外键相关的2表,我们需要这样做。

Customer customer = new Customer();
Order order = new Order();
customer.Order.Add(order);
DataContext.Customer.InsertOnSubmit(customer);