EF 4.3 में एक जटिल कुंजी के साथ AddOrUpdate के साथ डेटा को कैसे सीड करें


101

मैं कुछ परीक्षण डेटा के साथ एक विकास डेटाबेस को बीजने की कोशिश कर रहा हूं।

मैंने context.People.AddOrUpdate(p => p.Id, people));बहुत सफलता के साथ उपयोग किया है ।

मेरे पास एक और तालिका है जिसे मुझे बीज की आवश्यकता है, जिसमें मुझे प्राथमिक कुंजी नहीं पता होगी।

उदाहरण के लिए, मैं पहले और अंतिम नामों के मिलान के आधार पर AddOrUpdate करना चाहूंगा।

मैं अनिश्चित हूं कि अभिव्यक्ति को सही तरीके से कैसे लिखा जाए।

context.People.AddOrUpdate(p => p.FirstName && p.LastName, people);

स्पष्ट रूप से गलत है, लेकिन मुझे आशा है कि यह उस समाधान को व्यक्त करता है जिसकी मुझे तलाश है।

जवाबों:


200

इसे इस्तेमाल करे:

context.People.AddOrUpdate(p => new { p.FirstName, p.LastName }, people);

12
@LadislavMrnka क्या होगा यदि पहचानकर्ता को एक जटिल प्रकार का होना चाहिए अर्थात context.People.AddOrUpdate(p => new { p.Name.FirstName, p.Name.LastName }, people)?
गब

3
@LadislavMrnka, भी, अगर संपत्ति एक अशक्त प्रकार है तो क्या होगा? यानी context.People.AddOrUpdate(p => new { p.Birthdate }, people)?
स्टैक 247

2
यहाँ कुछ ध्यान देने योग्य बात यह है कि 'लोगों के संग्रह को एक ARRAY होना चाहिए और एक सूची नहीं होनी चाहिए। यदि आपके पास संस्थाओं की सूची है, तो आप बस .ToArray () सूची पर कॉल कर सकते हैं। मैं उस एक के साथ संघर्ष कर रहा था :) - अच्छा जवाब
डीन मार्टिन

1
यह काम करने के लिए नहीं मिल सकता है। संभवतः क्योंकि (संयुक्त कुंजी में निर्दिष्ट 3 गुणों के अलावा) मेरे पास ऑटो उत्पन्न संख्याओं के साथ एक और आईडी फ़ील्ड है?
सोनिक सोल

@LadislavMrnka माइग्रेशन फोल्डर (configuration.cs और ...) को माइग्रेशन करने और डेटाबेस फ़ील्ड अपडेट करने के बाद रखने की आवश्यकता है ???
अमीन

1

यदि आपको Only primitive types or enumeration types are supported in this context.नेविगेशन संपत्ति का उपयोग करने के कारण मिला है - विदेशी कुंजी संपत्ति को सीधे इकाई में जोड़ने पर विचार करें (हो सकता है कि केवल गेट्टर के साथ) और इसे लदीस्लाव मिन्का के रूप में उपयोग करें ।


code firstदृष्टिकोण में अन्य तालिका विदेशी कुंजी की नेविगेशन संपत्ति कैसे जोड़ें ? मैं संरचना की तरह है context.People.AddOrUpdate(p => new { p.Name.FirstName, p.Name.LastName }, people)? यह संभव है
yogen darji

अगर मैं The specified type member 'NameId' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
गेट्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.