LINQ to SQL прочитайте id просто вставьте и откатитесь - PullRequest
0 голосов
/ 16 марта 2012

Вот моя проблема, я хочу получить идентификатор из того, что я только что вставил, и использовать его как внешний ключ для другой таблицы.

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 транзакции.Как я могу откатить 1-й, если 2-й сбой ??

Ответы [ 4 ]

0 голосов
/ 16 марта 2012

ОК, теперь я знаю, что делать.Вставьте 2 таблицы, которые связаны с внешним ключом, нам нужно это сделать.

Customer customer = new Customer();
Order order = new Order();
customer.Order.Add(order);
DataContext.Customer.InsertOnSubmit(customer);
0 голосов
/ 16 марта 2012

Добавьте любое количество вызовов в методы InsertOnSubmit / Delete и вызывайте SubmitChanges, когда все изменения сделаны. Внутри одной TransactionScope либо создается транзакция вручную.

0 голосов
/ 16 марта 2012

Возможно, если ваши сущности связаны (если есть связь в базе данных), вы можете сделать так

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

Не могли бы вы дать больше информации?

0 голосов
/ 16 марта 2012

Если вы согласны с обеими отправками в одной транзакции:

using (TransactionScope scope = new TransactionScope())
{
    try
    {
        perform first submit
        perform second submit
    }
    finally
    {
        scope.Complete();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...