[英]Bulk Insert Error Entity Framework
我有同樣的錯誤 。 如果您將BulkInset與某些並發邏輯一起使用,例如:多個線程或任務,則可以完全解決此錯誤。 它導致的不是線程安全代碼(已在本機存儲庫中修復),但是相應的Nuget Package仍然存在此錯誤,因此您可以輕松解決問題-只需下載存儲庫並用它替換當前的Nuget Package。 這種代碼的和平包含異常 :
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.