Использование TransactionScope вызывает операторы удаления снова в базе данных? - PullRequest
1 голос
/ 16 декабря 2008

Я использую LINQ to SQl и TransactionScopre. Я вставляю данные в SQL.

_context.tblDataContainer.InsertOnSubmit(migrationData);

using (TransactionScope ts = new TransactionScope())
{
    _context.SubmitChanges();
    ts.Complete();
}

при этом linq выполняет любые операторы удаления в SQL. Я проверил, используя контекстный журнал, и в базу данных не было выдано ни одного оператора удаления, но мой администратор БД сказал, что я выполняю некоторые операторы удаления в этой транзакции. Есть мнения по этому поводу?

1 Ответ

1 голос
/ 16 декабря 2008

Нам действительно нужно знать больше о вашей схеме. Помните, что L2S декларативен - вы заявляете, что хотите, а не как это сделать. Вполне возможно, что механизм L2S посмотрел на вашу базу данных, нашел какой-то тип ограничений или другую ситуацию и решил, что лучший способ безопасно вставить эти данные - это сначала удалить запись. Хотя это растянуто, это может произойти.

ОДНАКО, есть другие возможности, такие как триггеры. Вы проверили, выполняет ли таблица вставку, и посмотрите, есть ли на ней триггеры, которые могут удалять данные в другом месте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...