EF 4.3-তে একটি জটিল কী সহ অ্যাডআরআপডেটের সাথে ডেটা বীজ করবেন কীভাবে


101

আমি কিছু পরীক্ষার ডেটা সহ একটি ডেভেলপমেন্ট ডাটাবেস বীজ করার চেষ্টা করছি।

আমি context.People.AddOrUpdate(p => p.Id, people));অনেক সাফল্যের সাথে ব্যবহার করেছি ।

আমার কাছে আরও একটি টেবিল রয়েছে যা আমার বীজ বানাতে হবে, এতে আমি প্রাথমিক কীটি জানতাম না।

উদাহরণস্বরূপ, আমি প্রথম এবং শেষ নামগুলির মিলের ভিত্তিতে অ্যাডআরআউডপেটটি যুক্ত করতে চাই।

আমি কীভাবে এক্সপ্রেশনটি সঠিকভাবে লিখব তা সম্পর্কে আমি নিশ্চিত নই।

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

স্পষ্টতই ভুল, তবে আমি আশা করি এটি আমার সন্ধানের সমাধানটি পৌঁছে দেয়।

উত্তর:


200

এটা চেষ্টা কর:

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

12
@ লাডিস্লাভ মির্নকা যদি শনাক্তকারীকে জটিল ধরণের হওয়ার প্রয়োজন হয় তবে context.People.AddOrUpdate(p => new { p.Name.FirstName, p.Name.LastName }, people)?
গ্যাব

3
@ লাডিস্লাভ মির্নকা, এছাড়াও, যদি সম্পত্তিটি একটি অযোগ্য প্রকারের হয়? অর্থাৎ context.People.AddOrUpdate(p => new { p.Birthdate }, people)?
স্ট্যাক 247

2
এখানে লক্ষণীয় কিছু হ'ল 'লোক' সংগ্রহের তালিকা হওয়া দরকার না বরং এয়ারে হওয়া দরকার। আপনার সত্তার তালিকা থাকলে আপনি তালিকায় কেবল .ToArray () কল করতে পারেন। আমি তার সাথে লড়াই করেছি :) - ভাল উত্তর
ডিন মার্টিন

1
এটি কাজ করতে পারে না। সম্ভবত কারণ (সংমিশ্রিত কীতে উল্লিখিত 3 টি বৈশিষ্ট্য ছাড়াও) আমার আরও একটি আইডি ক্ষেত্র রয়েছে যা স্বয়ংক্রিয়ভাবে উত্পন্ন সংখ্যা সহ আছে?
সোনিক সোল

@ লাডিস্লাভম্রনকাকে মাইগ্রেশন ও ডাটাবেস ক্ষেত্রগুলি আপডেট করার পরে মাইগ্রেশন ফোল্ডার (কনফিগারেশন। সি ... এবং) রাখা দরকার ???
আমিনএম

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)? এটি সম্ভব
যোগেন দার্জি

যদি আমি সেট করি গেটারের সম্পত্তি ত্রুটিটি হ'লThe specified type member 'NameId' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
যোগেন দার্জি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.