ऐसा लगता है कि आपको व्यवसाय में कोई समस्या है। पहले आपको यह तय करने की आवश्यकता है कि क्या होगा जब आपके पास पहले से ही एक ही आईडी के साथ एक इकाई है और कोई उसी आईडी के साथ एक नई (नई जानकारी) डालने का प्रयास करता है।
ऐसा लगता है कि आपने पहले ही तय कर लिया है:आप कार्रवाई छोड़ना चाहते हैं।
यह किसी भी तरह असामान्य है क्योंकि अगर आपको उस एपीआई के क्लाइंट से एक इकाई के बारे में कुछ नया डेटा प्राप्त होता है जो आपके डेटाबेस में पहले से मौजूद है -> जो एक अपडेट की तरह दिखता है।
कुछ पुस्तकालय मौजूद हैं जो कुछ ऐसा ही कर सकते हैं: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 नहीं है, लेकिन यह आपके डेटा को बरकरार रखेगा।