आपको ShopID
नहीं बनाना चाहिए अशक्त यदि यह डिजाइन द्वारा आवश्यक है।
आप जिस समस्या का सामना कर रहे हैं, वह इसलिए है क्योंकि Add
विधि नेविगेशन गुणों के माध्यम से पहुंच योग्य सभी इकाई उदाहरणों को भी पुनरावर्ती रूप से चिह्नित करती है और वर्तमान में संदर्भ द्वारा ट्रैक नहीं की जाती है Added
(यानी नया)।
इसे कई तरह से हल किया जा सकता है:
-
इकाई प्रविष्टि को
Added
. पर सेट करनाAdd
. के बजाय विधि:_context.Entry(Product).State = EntityState.Added; await _context.SaveChangesAsync();
-
नेविगेशन गुण को
null
. पर सेट करना पहले कॉलिंगAdd
:Product.Shop = null; _context.Products.Add(Product); await _context.SaveChangesAsync();
-
नेविगेशन प्रॉपर्टी ऑब्जेक्ट को पहले अटैच किया जा रहा है कॉलिंग
Add
:if (Product.Shop != null) _context.Attach(Product.Shop); _context.Products.Add(Product); await _context.SaveChangesAsync();
-
Update
का उपयोग करनाAdd
. के बजाय :_context.Products.Update(Product); await _context.SaveChangesAsync();
अंतिम तकनीक को डेटा सहेजना - डिस्कनेक्ट की गई संस्थाएँ - नई और मौजूदा संस्थाओं का मिश्रण :
चूंकि यह केवल तभी काम करता है जब सभी इकाइयां ऑटो-जेनरेटेड पीके का उपयोग करती हैं, और संबंधित इकाइयों के अनावश्यक अपडेट भी उत्पन्न करती हैं, मैं इसकी अनुशंसा नहीं करता हूं।