আপনি অবশ্যই সেই জিনিস নন যিনি বিষয়গুলিকে বিভ্রান্ত করেন। :-)
আমি মনে করি যে প্রশ্নের উত্তর আপনি কতটা পিউরিস্ট হতে চান তার উপর নির্ভর করে।
আপনি যদি কঠোরভাবে ডিডিডি দৃষ্টিকোণ চান, তবে এটি আপনাকে একপথে নিয়ে যাবে। আপনি যদি স্টোর এবং ডাটাবেসগুলির মধ্যে পৃথক হয়ে থাকা স্তরটির ইন্টারফেসটিকে মানিক করতে সহায়তা করে এমন একটি নিদর্শন হিসাবে আপনি যদি সংগ্রহস্থলটির দিকে নজর দেন তবে এটি আপনাকে অন্য একটি ডাউন করবে।
আমার দৃষ্টিকোণ থেকে ভান্ডারটি হ'ল ডেটা অ্যাক্সেসের একটি স্পষ্টভাবে নির্দিষ্ট স্তর other অন্য কথায় আপনার ডেটা অ্যাক্সেস লেয়ারটি প্রয়োগের মানক উপায়। বিভিন্ন সংগ্রহস্থল বাস্তবায়নের মধ্যে কিছু পার্থক্য রয়েছে, তবে ধারণাটি একই।
কিছু লোকেরা ডিপোজিটরিতে আরও ডিডিডি সীমাবদ্ধতা রাখবে অন্যরা ডাটাবেস এবং পরিষেবা স্তরের মধ্যে সুবিধামতো মধ্যস্থতা হিসাবে সংগ্রহস্থলটি ব্যবহার করবে। ডিএএল এর মতো একটি সংগ্রহস্থল ডেটা অ্যাক্সেসের নির্দিষ্টকরণ থেকে পরিষেবা স্তরকে পৃথক করে।
একটি বাস্তবায়ন ইস্যু যা তাদের আলাদা করে দেখায়, তা হ'ল প্রায়শই এমন একটি পদ্ধতি যা একটি নির্দিষ্টকরণ গ্রহণ করে একটি সংগ্রহস্থল তৈরি করা হয়। সংগ্রহস্থলটি সেই ডেটা ফেরত দেবে যা সেই স্পেসিফিকেশনটিকে সন্তুষ্ট করে। বেশিরভাগ traditionalতিহ্যবাহী ডালগুলি যা আমি দেখেছি, তার পদ্ধতির একটি বৃহত্তর সেট থাকবে যেখানে পদ্ধতিটি যে কোনও সংখ্যক পরামিতি গ্রহণ করবে। যদিও এটি একটি ছোট পার্থক্যের মতো শোনাচ্ছে, আপনি লিনক এবং এক্সপ্রেশনগুলির ক্ষেত্রগুলিতে প্রবেশ করলে এটি একটি বড় সমস্যা। আমাদের ডিফল্ট সংগ্রহস্থল ইন্টারফেসটি দেখতে এমন দেখাচ্ছে:
public interface IRepository : IDisposable
{
T[] GetAll<T>();
T[] GetAll<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors);
void Delete<T>(T entity);
void Add<T>(T entity);
int SaveChanges();
DbTransaction BeginTransaction();
}
এটি কি ডাল বা একটি ভান্ডার? এই ক্ষেত্রে আমি এটি উভয় অনুমান।
কিম