Вставка 100 записей за транзакцию - PullRequest
3 голосов
/ 22 июля 2010

Можно ли одновременно вставлять только 100 записей за одну транзакцию?Я хотел бы сделать так, чтобы избежать тайм-аутов в моем приложении.

using(var scope = new TransactionScope())
{

foreach ( object x in list)

        {
          // doing insertOnSubmit here
        }

context.SubmitChanges();
scope.Complete();

}

Поэтому я бы хотел вставить только 100 или даже 50 строк в эту транзакцию, чтобы избежать тайм-аутов.

Ответы [ 2 ]

3 голосов
/ 22 июля 2010

Как то так?

TransactionScope scope;
bool committed = false;
int i = 0;
const int batchSize = 100; // or even 50

try
{
    foreach ( object x in list)
    {
        if (i % batchSize == 0)
        {
            if (scope != null)
            {
                scope.Commit();
                scope.Dispose();
                context.SubmitChanges();
            }
            scope = new TransactionScope();
        }

        // doing insertOnSubmit here
        ++i;
    }

    if (scope != null)
    {
        scope.Commit();
        context.SubmitChanges();
    }
}
finally
{
   if (scope != null) 
   {
       scope.Dispose();
   }
}
1 голос
/ 22 июля 2010

Конечно. Просто начинайте новую транзакцию каждые 50-100 записей. В чем ваша проблема?

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