Использование DbContext параллельно

Если вы развертываете в Windows, узел сценария Windows предлагает очень полезный JScript API для файловой системы и других локальных ресурсов. Однако включение сценариев WSH в локальное веб-приложение может быть не таким элегантным, как вы могли бы пожелать.

0
задан Josh Monreal 18 January 2019 в 09:41
поделиться

2 ответа

Пожалуйста, посмотрите этот поток StackOverflow: Безопасен ли поток DbContext?

DbContext не является потокобезопасным, но вы можете создать новый для каждого потока. Если вы используете Задачи и тому подобное, убедитесь, что для каждого из них создан новый DbContext.

0
ответ дан gerwin 18 January 2019 в 09:41
поделиться

Это очень возможно и быстрее (при правильном использовании, об этом позже)
И вот как вы можете это сделать:

var context1 = new DbContext();
_fooList = new List<Foo>
{
    // Thousands of datasets
}

context1.Set<Foo>().AddRange(_fooList);

var context2 = new DbContext();
_barList = new List<Bar>
{
    // Thousands of datasets
}

context2.Set<Bar>().AddRange(_barList);

var fooTask = context1.SaveChangesAsync();
var barTask = context2.SaveChangesAsync();

await Task.WhenAll(new Task[] {fooTask, barTask});

Это быстрее, чем иметь один Запись контекста в одну таблицу, а затем в следующую, но если вы делаете это для той же таблицы, это может быть на самом деле медленнее, чем делать это с 1 Context

0
ответ дан MindSwipe 18 January 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: