Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डुप्लिकेट प्रविष्टियों पर ध्यान न दें और EF Core में DbContext.SaveChanges () पर सफल प्रविष्टियां करें

ऐसा लगता है कि आपको व्यवसाय में कोई समस्या है। पहले आपको यह तय करने की आवश्यकता है कि क्या होगा जब आपके पास पहले से ही एक ही आईडी के साथ एक इकाई है और कोई उसी आईडी के साथ एक नई (नई जानकारी) डालने का प्रयास करता है।

ऐसा लगता है कि आपने पहले ही तय कर लिया है:आप कार्रवाई छोड़ना चाहते हैं।

यह किसी भी तरह असामान्य है क्योंकि अगर आपको उस एपीआई के क्लाइंट से एक इकाई के बारे में कुछ नया डेटा प्राप्त होता है जो आपके डेटाबेस में पहले से मौजूद है -> जो एक अपडेट की तरह दिखता है।

कुछ पुस्तकालय मौजूद हैं जो कुछ ऐसा ही कर सकते हैं:https://github.com/borisdj/EFCore.BulkExtensions (जो वर्तमान में केवल एमएसएसक्यूएल के साथ काम कर रहा है)

इस पुस्तकालय का उपयोग करना (जो एक ज्ञात है और माइक्रोसॉफ्ट द्वारा पहले से ही एक ईएफ कोर टूल के रूप में उल्लेख किया गया था:https://docs.microsoft.com/en-us/ef/core/extensions/ ) आपके पास यह करने की संभावना है:

  • यदि आप एक ही आईडी (अप्सर्ट) के साथ एक इकाई पाते हैं तो सभी डेटा (सभी कॉलम) डालें या अपडेट करें:

    context.BulkInsertOrUpdateAsync(entitiesList);

  • अपने डेटाबेस से संस्थाओं को ग्राहकों से प्राप्त होने वाली संस्थाओं के साथ सिंक्रनाइज़ करें:

    context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);

सबसे अधिक संभावना है कि आप अपने मामले के लिए पहले से लागू कुछ नहीं पाएंगे, लेकिन आप इस पुस्तकालय को इसके साथ समायोजित कर सकते हैं:

BulkInsertOrDropAsync 

जो कुछ ऐसा करेगा:

WHEN MATCHED THEN UPDATE SET A.ID=A.ID --The ID's are already the same so nothing will happen
WHEN NOT MATCHED THEN INSERT(A.ID,A.NAME,A.CODE,A.DESCRIPTION) 

जो वास्तव में एक DROP नहीं है, लेकिन यह आपके डेटा को बरकरार रखेगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C++ का उपयोग करके एक MySQL सर्वर से कनेक्ट करना

  2. SLIM ढांचे का उपयोग करके MySQL लेनदेन कैसे बनाएं

  3. बहुरूपी जैसी SQL डेटाबेस तालिका संरचना

  4. mysql को बाहरी रूप से कनेक्शन कैसे स्वीकार करें?

  5. MySQL:अद्वितीय फ़ील्ड को एक अनुक्रमणिका होने की आवश्यकता है?