2011-12-16 8 views
11

में वही प्राथमिक कुंजी हो सकती है, मैं ईएफ 4.0 का उपयोग कर एक प्रोजेक्ट में काम कर रहा हूं।एकाधिक जोड़ा इकाइयों में एंटिटी फ्रेमवर्क

Employee तालिका में एक कॉलम ReferEmployeeID है जिसमें कर्मचारी का कर्मचारी आईडी है जो सिस्टम में एक नया कर्मचारी रेफर कर रहा है। तो Employee एक आत्म-संदर्भ तालिका है।

अब ऐसे कर्मचारी के मामले में जो सिस्टम में नहीं जोड़ा गया है, वह जोड़ने वाला है और वह सिस्टम में किसी अन्य कर्मचारी को भी संदर्भित करता है, पंक्ति पूरी तरह से जोड़ दी जानी चाहिए।

ActualEmployee अभी तक नहीं बुलाया सहेजें और फिर उसे ReferEmployee.Employee = ActualEmployee

मैं समझता हूँ कि मुद्दा है कि दोनों कर्मचारियों वास्तविक और उल्लेख कर्मचारी आईडी 0 पर सेट है, लेकिन कैसे इस समस्या को हल करने के लिए आते हैं। तो मूल रूप से

// create two new employees - one refers to the other 
Employee john = new Employee { EmployeeID = -1, EmpName = "John" }; 
Employee peter = new Employee { EmployeeID = -2, EmpName = "Peter", ReferEmployeeID = -1 }; 

// add them to the EF model 
ctx.AddToEmployees(john); 
ctx.AddToEmployees(peter); 

// save changes 
ctx.SaveChanges(); 

, EmployeeID मूल्यों "डमी" के साथ अपने नए कर्मचारियों को परिभाषित करने और लिंक स्थापित (Peter संदर्भ:

उत्तर

18

यह मानते हुए कि अपने डेटाबेस तालिका में EmployeeIDINT IDENTITY के रूप में परिभाषित किया गया है, तो आप ऐसा कर सकता है John यहां, "डमी" आईडी के माध्यम से)।

जब एसक्यूएल सर्वर में इस बचत, इकाई की रूपरेखा असलीEmployeeID मूल्यों (जो एसक्यूएल सर्वर बाहर हाथ जब पंक्ति सम्मिलित) और एफई दो कर्मचारियों के बीच उस लिंक को बनाए रखेगा प्राप्त करने की प्रक्रिया को संभाल लेंगे।

+1

मैं इस जवाब का लगभग दो घंटे तक शिकार कर रहा हूं। मुझे कभी नहीं पता था कि ईएफ ने इस तरह काम किया था (डमी पहचान का उपयोग कर)। क्या यह कहीं भी दस्तावेज या चर्चा की गई है? धन्यवाद! – Mike

+0

@ माइक: सुनिश्चित नहीं - मैंने इसे लाइनों के साथ कहीं भी उठाया, किताबें, ब्लॉग और परिचय वीडियो जूली लर्मन और ईएफ टीम द्वारा पढ़ा –

संबंधित मुद्दे