मैं EF6
का उपयोग कर रहा हूं और AddRange()
विधि की निम्न गति के कारण मुझे BulkInsert
का उपयोग करने की आवश्यकता है। इसलिए मैंने here के माध्यम से EF6 के लिए BulkInsert के NuGet पैकेज को जोड़ा।इकाई फ्रेमवर्क थोक सम्मिलित करें KeyNotFoundException त्रुटि
मिले संघर्ष:
पहली बात मैं
dll
रों जोड़ने के बाद प्राप्त इस चेतावनी थी। कृपया प्रोजेक्ट फ़ाइल में "AutoGenerateBindingRedirects" प्रॉपर्टी को पर सेट करें।
मैं (भी मेरे संपर्क एक और तालिका में एक विदेशी कुंजी है,) मेरे सारे Contact
संस्थाओं अर्थात् contactsToInsert जोड़ा जाना चाहिए इस बात का एक List
बनाया है। मैं एक KeyNotFoundException
दावा है कि "दिया कुंजी शब्दकोश में मौजूद नहीं थे" प्राप्त जब मैं निम्नलिखित कोड को चलाने की कोशिश की।
using (var db = new Entities(myConnectionString))
{
db.BulkInsert(contactsToInsert);
db.SaveChanges();
}
एनबी। मैं BackgroundWorker
के अंदर बल्कइन्सर्ट चला रहा हूं। क्या यह संभवतः this fix द्वारा निर्धारित मुद्दे का कारण हो सकता है?
StackTrace:
एक विरासत जब आपके इकाई है और:
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at EntityFramework.MappingAPI.Mappers.MapperBase.BindForeignKeys() in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 603
at EntityFramework.MappingAPI.Mappings.DbMapping..ctor(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappings\DbMapping.cs:line 101
at EntityFramework.MappingAPI.EfMap.Get(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\EfMap.cs:line 60
at EntityFramework.MappingAPI.Extensions.MappingApiExtensions.Db(DbContext ctx, Type type) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Extensions\MappingApiExtensions.cs:line 51
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
at EntityFramework.BulkInsert.Helpers.MappedDataReader`1..ctor(IEnumerable`1 enumerable, IEfBulkInsertProvider provider) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Helpers\MappedDataReader.cs:line 58
at EntityFramework.BulkInsert.Providers.EfSqlBulkInsertProviderWithMappedDataReader.Run[T](IEnumerable`1 entities, SqlTransaction transaction, BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\EfSqlBulkInsertProviderWithMappedDataReader.cs:line 22
at EntityFramework.BulkInsert.Providers.ProviderBase`2.Run[T](IEnumerable`1 entities, IDbTransaction transaction, BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line 77
at EntityFramework.BulkInsert.Providers.ProviderBase`2.Run[T](IEnumerable`1 entities, BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line 109
at EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext context, IEnumerable`1 entities, SqlBulkCopyOptions sqlBulkCopyOptions, Nullable`1 batchSize) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line 95
at EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext context, IEnumerable`1 entities, Nullable`1 batchSize) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line 75
at Prospect.Update.bw_DoWork(Object sender, DoWorkEventArgs e) in c:\Users\pedram.mobedi\Documents\Visual Studio 2013\Projects\Prospect\Update.cs:line 546
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
मैं सही बात में चलाने की है, और नहीं इस के लिए एक सुधार ढूंढने करने में सक्षम है। आखिरकार, मुझे कोई दूसरा ईएफ संदर्भ बनाना था जिसमें कोई नेविगेशन गुण नहीं था और केवल वह वर्ग जिसे मैं थोक Insert का उपयोग करके सम्मिलित करने की कोशिश कर रहा हूं। यह सिर्फ एक कामकाज है, और निश्चित रूप से एक फिक्स नहीं है, लेकिन यह मुझे काम करने की अनुमति देता है। –
क्या आपने 6.1.3 के साथ काम कर रहे नवीनतम संस्करणों की जांच की थी। मैंने अब कुछ परियोजनाओं के लिए पुस्तकालयों का उपयोग किया है, अब तक कोई समस्या नहीं है :)। एक और बिंदु: क्या आप अपनी संपर्क कक्षा परिभाषा प्रदान कर सकते हैं? –