ল্যাম্বডা এক্সপ্রেশন সহ সত্ত্বা ফ্রেমওয়ার্ক 4 অন্তর্ভুক্তি ব্যবহার করে


88

আমি কীভাবে এই বিষয়টিকে কাটিয়ে উঠতে পারি সে সম্পর্কে অনেক নিবন্ধ দেখেছি, সমস্ত সিটিপি 4 এর সাথে সম্পর্কিত, বা আমার নিজের এক্সটেনশন পদ্ধতিগুলি যুক্ত করা।

ভিতরে কোনও ল্যাম্বডা এক্সপ্রেশন ব্যবহার করার কোনও "অফিসিয়াল" ইএফ 4 অন্তর্ভুক্ত রয়েছে (এটি প্রথম স্তরের সম্পর্ক এবং দ্বিতীয় এবং আরও স্তরের উভয়ের জন্য) বা এটি শেষ পর্যন্ত আরটিএমের অন্তর্ভুক্ত হয়নি?

এটি একটি আছে - আমি এখন আমার কোডটিতে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে (# system.data.entity # system.data.linq সহ) এটি কীভাবে করব তা শিখে আমি আনন্দিত হব:

ল্যাম্বডা এক্সপ্রেশনটিকে 'স্ট্রিং' টাইপে রূপান্তর করতে পারে না কারণ এটি কোনও প্রতিনিধি প্রকার নয়:

var customers = from c in
context.Customers.Include(c=>c.Phone)

4
না, এর অস্তিত্ব নেই (সিটিপি 4 বাদে - যেমন আপনি বলেছেন)। ধরণের সুরক্ষা পেতে আমি এক্সটেনশন পদ্ধতি / এনাম ব্যবহার করি।
RPM1984

আমি এটিও করেছি, সুতরাং এমএস এটি সিটিপি 4 এ অন্তর্ভুক্ত করেছিল এবং এটি আরটিএম-এ সরিয়ে দিয়েছে?
দানি

উত্তর:


230

সত্তা ফ্রেমওয়ার্ক 4.1 এর RTM সংস্করণ বাস্তবে রয়েছে এক্সটেনশন পদ্ধতি মধ্যে EntityFramework.dllফাইল মাধ্যমে ল্যামডা সঙ্গে উৎসুক লোড জন্য Includeফাংশন। আপনার প্রকল্পে কেবলমাত্র ডিএলএল অন্তর্ভুক্ত করুন এবং আপনার মতো কোড লিখতে সক্ষম হওয়া উচিত:

var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList();

System.Data.Entity নেমস্পেস অন্তর্ভুক্ত করার জন্য একটি আমদানি / ব্যবহারের বিবৃতি যুক্ত করতে মনে রাখবেন । অন্যথায় সংকলক এক্সটেনশন পদ্ধতিগুলি খুঁজে পাবে না। যেমন:

using System.Data.Entity;

আরও তথ্যের জন্য এই ADO.NET টিম ব্লগ নিবন্ধটি দেখুন।


4
যদিও ADO.net ব্লগের লিঙ্কটি এখনও প্রাসঙ্গিক, একই বিষয়টির জন্য EF6 রেফারেন্স / গাইড হ'ল সম্পর্কিত সংস্থাগুলি লোড করা আমার মনে হয় যে ডকুমেন্টেশনটি তারা যে ব্লগ এবং পোস্ট ব্যবহার করছে তার পরিবর্তে প্রিন্সেস এবং ইউনিকর্ন উদাহরণগুলিতে স্যুইচ করা দরকার think সর্বত্র
আরকাইন 55

4
ধন্যবাদ, আমি কেবল System.Data.Entity ব্যবহার করে যুক্ত করছি; এটি আমার কাজ।
আদনান

টিম ব্লগের লিঙ্কটি মারা গেছে, এটি নতুন অবস্থান
ন্যান্টাইনস

90

যদিও এটি প্রশ্নের মধ্যেই অন্তর্নিহিত, অন্য যে কারও জন্য একই সমস্যা রয়েছে যেখানে তারা ল্যাম্বডাস ব্যবহার করতে পারবেন না। অন্তর্ভুক্ত করুন, নিশ্চিত করুন যে আপনার এটি রয়েছে:

using System.Data.Entity;

5

এই মুহুর্তে আরটিএমে ল্যাম্বডা এক্সপ্রেশন সহ অন্তর্ভুক্তির জন্য কোনও অফিসিয়াল সমর্থন নেই। আমি ব্যবহার করছি এই

আমরা যখন সিটিপি 4 নিয়ে কথা বলি তখন আমরা অর্থ হ'ল সত্তা ফ্রেমওয়ার্ক বৈশিষ্ট্য। এটি EF4 এর চেয়ে নতুন এপিআই। এটিতে মূলত কোড ফার্স্ট এবং কয়েকটি অন্যান্য উন্নতি অন্তর্ভুক্ত রয়েছে।


এমএস এই বৈশিষ্ট্যটি কখন সমর্থন করবে কোনও ধারণা? আমি বুঝতে পারি যে এই সমস্ত এক্সটেনশন পদ্ধতির বৃহত / মাল্টিলেভেল অবজেক্টের সাথে পারফরম্যান্স সমস্যা রয়েছে - যেহেতু তাদের প্রতিটি কল অন্তর্ভুক্ত করার জন্য বারবার অতিক্রম করতে হয় এবং যখন "সংজ্ঞা" গাছটি স্থির থাকে এবং ক্যাশে যায়, তেমন কোনও সমাধান নেই is এটি এখনও
দানি 18

সত্তা ফ্রেমওয়ার্ক বৈশিষ্ট্যটি বর্তমানে সিটিপি 5 এ রয়েছে। আমার ধারণা, আরটিএম সংস্করণটি ২০১১ সালের প্রথম কোয়ার্টারে প্রকাশিত হওয়া উচিত So সুতরাং আশা করি এতে ল্যাম্বডা এক্সপ্রেশন সহ অন্তর্ভুক্ত থাকবে তবে আমি এর বাস্তবায়নটি এখনও পরীক্ষা করে দেখিনি তাই এটি কোনও ধরণের ক্যাশে ব্যবহার করে কিনা তা আমি বলতে পারছি না।
লাডিস্লাভ Mrnka

31
এই উত্তরটি EF 4.3.x হিসাবে ভুল is অন্যান্য উত্তরগুলি সঠিক, লামদা এক্সপ্রেশন দিয়ে ওভারলোড পাওয়ার জন্য অবশ্যই সিস্টেম.ডাটা.এন্টি ব্যবহার করা উচিত ।
এরিক জে।

4
@ এরিকজে: হ্যাঁ দৃF়ভাবে টাইপ করা অন্তর্ভুক্তি EF 4.1 থেকে উপলব্ধ।
লাডিস্লাভ Mrnka
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.