আপনি আসলে ঠিক বলেছেন। DbContext
কাজের প্যাটার্নের এককের IDbSet
বাস্তবায়ন এবং এটি সংগ্রহস্থলের প্যাটার্নের একটি বাস্তবায়ন।
সংগ্রহস্থলগুলি বর্তমানে খুব জনপ্রিয় এবং অতিরিক্ত ব্যবহৃত। প্রত্যেকে এগুলি কেবলমাত্র এজন্য ব্যবহার করে যে সত্তা কাঠামোর জন্য ভান্ডার তৈরির বিষয়ে কয়েক ডজন নিবন্ধ রয়েছে তবে এই সিদ্ধান্তের সাথে সম্পর্কিত চ্যালেঞ্জগুলি আসলে কেউ বর্ণনা করে না।
সংগ্রহস্থল ব্যবহারের প্রধান কারণগুলি হ'ল:
- উপরের স্তর থেকে EF লুকান
- কোডটিকে আরও ভাল পরীক্ষামূলক করে তোলেন
প্রথম কারণটি হ'ল এক ধরণের আর্কিটেকনিক বিশুদ্ধতা এবং দুর্দান্ত ধারণা যে আপনি যদি আপনার উপরের স্তরগুলি ইএফ-তে স্বতন্ত্র করেন তবে আপনি পরে অন্যান্য অধ্যবসায় কাঠামোতে যেতে পারেন। আসল বিশ্বে আপনি কতবার এমন জিনিস দেখেছেন? এই কারণে EF এর সাথে কাজ করা আরও শক্ত করে তোলে কারণ EF ডিফল্টরূপে যা অনুমোদন করে তা আপনার ভাণ্ডারগুলিকে অবশ্যই অতিরিক্ত অতিরিক্ত বৈশিষ্ট্যগুলি বহন করতে হবে।
একই সময়ে ইএফ কোডটি মোড়ানো আপনার কোডকে আরও সুসংগঠিত রাখতে এবং উদ্বেগের বিধি বিচ্ছেদ অনুসরণ করতে পারে। আমার জন্য এটি रिपিজিটরি এবং কাজের ইউনিটের একমাত্র আসল সুবিধা হতে পারে তবে আপনাকে বুঝতে হবে যে EF এর সাথে এই বিধি অনুসরণ করা আপনার কোডটি আরও ভাল রক্ষণাবেক্ষণযোগ্য এবং আরও ভাল পঠনযোগ্য করে তুলবে তবে আপনার অ্যাপ্লিকেশন তৈরির প্রাথমিক প্রচেষ্টায় অনেক বেশি হবে এবং ছোট অ্যাপ্লিকেশনগুলির জন্য এটি অপ্রয়োজনীয় জটিলতা হতে পারে।
দ্বিতীয় কারণটি আংশিকভাবে সঠিক। EF এর বড় অসুবিধাগুলি হ'ল অনমনীয় আর্কিটেকচার যা খুব কমই ঠাট্টা করা যায় তাই আপনি যদি উপরের স্তরটিকে পরীক্ষা করতে চান তবে আপনাকে অবশ্যই এএফটি মোড়তে হবে এটির বাস্তবায়নের উপহাস করার জন্য। তবে এর আরও অনেক পরিণতি রয়েছে যা আমি এখানে বর্ণনা করেছি ।
আমি অনুসরণ Ayende এর ব্লগ । আপনি যদি কখনও NHibernate ব্যবহার করেন তবে আপনি সম্ভবত তাঁর নিবন্ধগুলি জানেন। এই লোকটি সম্প্রতি এনএইচবারনেট সহ সংগ্রহস্থল ব্যবহারের বিরুদ্ধে বেশ কয়েকটি নিবন্ধ লিখেছিল তবে এনএইচবারনেট আরও মজাদার।