Attach()
. के साथ विचार विधि यह है कि आपके पास एक ऐसी इकाई है जिसे डीबी में जाना जाता है लेकिन इस संदर्भ से ट्रैक नहीं किया जा रहा है, है ना? मेरा आपसे प्रश्न है कि क्या आप निश्चित रूप से जानते हैं कि यह भूमिका यहाँ है:
Role r = new Role { ID = 1, Name = "Members" };
क्या कुछ ऐसा है जो पहले से मौजूद है? यदि ऐसा नहीं होता है, तो मुझे नहीं लगता कि आप जो करना चाहते हैं वह उपयोग करना है
ctx.Roles.Attach(r);
बल्कि यह है कि आप लिखेंगे:
ctx.Roles.Add(r);
और फिर आप घूम सकते हैं और लिख सकते हैं
User u = new User {
Login = login,
Password = password,
Status = 1,
};
ctx.Users.Add(u);
u.Roles.Add(r);
ctx.SaveChanges();
आपके पहले उदाहरण में समस्या यह है कि यह नई भूमिका वास्तव में DB के लिए नई है इसलिए इसे संलग्न करना वह नहीं है जो आप करना चाहते हैं, बल्कि आप इसे जोड़ना चाहेंगे।
और ctx.SaveChanges()
. के लिए सिंगल कॉल यहाँ ठीक काम करना चाहिए।