У меня был такой же error. Если вы используете BulkInset с некоторой логикой с параллельной логикой, например: несколько потоков или задач, вы можете взять именно эту ошибку. Он вызвал небезопасный код (был исправлен в собственном репозитории), но соответствующий пакет Nuget по-прежнему имеет эту ошибку, поэтому вы можете легко решить проблему - просто загрузите репозиторий и замените текущий пакет Nuget на него. This peace of code contains exception:
public static IEfBulkInsertProvider Get(DbContext context)
{
var connectionTypeName = context.Database.Connection.GetType().FullName;
if (!Providers.ContainsKey(connectionTypeName))
{
throw new BulkInsertProviderNotFoundException(connectionTypeName);
}
return Providers[connectionTypeName]().SetContext(context);
}
Не Потокобезопасная код Providers
собственности, как показано выше:
private static Dictionary<string, Func<IEfBulkInsertProvider>> Providers
{
get
{
//commented pice of code does not exist at Nuget Package
//lock (ProviderInitializerLockObject)
//{
if (_providers == null)
{
_providers = new Dictionary<string, Func<IEfBulkInsertProvider>>();
// bundled providers
Register<EfSqlBulkInsertProviderWithMappedDataReader>("System.Data.SqlClient.SqlConnection");
//Register<EfSqlCeBulkiInsertProvider>("System.Data.SqlServerCe.4.0");
}
//}
return _providers;
}
}
IS можно показать соответствующий код вместо этого изображения –
редактировал вопрос –
Как вы сопоставить Auditlog для bulkinsert операция? – Nathan