Entity Framework (EF) একটি Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক, যা .NET অ্যাপ্লিকেশনে ডেটাবেসের সাথে কাজ করার একটি শক্তিশালী এবং সহজ উপায় প্রদান করে। EF এর আর্কিটেকচার এমনভাবে ডিজাইন করা হয়েছে যাতে এটি ডেভেলপারদের কম সময়ে এবং কম কোড লিখে ডেটাবেস অপারেশন সম্পন্ন করতে সহায়তা করে। EF এর মূল উপাদানগুলো ডেটাবেসের সাথে যোগাযোগ, ডেটা ম্যানিপুলেশন, এবং মডেলিংয়ের কাজকে সহজ করে তোলে।
1. DbContext
DbContext EF এর মূল শ্রেণী (class) যা ডেটাবেসের সাথে যোগাযোগ স্থাপন এবং ডেটা অ্যাক্সেস করার কাজ করে। এটি ডেটাবেসে টেবিলগুলির সাথে মডেল ক্লাসগুলিকে সম্পর্কিত (map) করে, এবং ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশনগুলো পরিচালনা করে। DbContext ক্লাসের মাধ্যমে ডেটাবেস কনটেক্সটের সঙ্গে অ্যাক্সেস করা হয় এবং ডেটাবেসের সব ধরনের ম্যানিপুলেশন পরিচালনা করা যায়।
2. Entity Models
Entity Models, EF এর একটি গুরুত্বপূর্ণ অংশ, যা ডেটাবেস টেবিলগুলিকে অবজেক্ট বা ক্লাস হিসেবে রূপান্তরিত (map) করে। এই মডেলগুলি ডেটাবেস টেবিলের স্কিমা এবং সম্পর্কগুলির প্রতিনিধিত্ব করে। Entity Models এ সাধারণভাবে প্রপার্টি এবং সম্পর্ক (১:১, ১:এন, অনেক:অনেক) উল্লেখ করা হয়, যা ডেটাবেসের মধ্যে উপস্থিত টেবিলগুলির সমকক্ষ হয়।
3. Object-Relational Mapper (ORM)
ORM একটি প্রক্রিয়া যার মাধ্যমে অবজেক্টগুলিকে ডেটাবেস টেবিলের সাথে মানচিত্রিত (map) করা হয়। EF ORM হিসাবে কাজ করে, এবং এটি ডেভেলপারদের SQL কোড না লিখে ডেটাবেসের সাথে কাজ করার সুযোগ দেয়। ORM ডেটাবেসের লজিকাল ডেটা এবং অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের মধ্যে সেতু হিসেবে কাজ করে।
4. LINQ (Language Integrated Query)
LINQ, EF এর মাধ্যমে ডেটাবেস কুয়েরি করার একটি শক্তিশালী এবং সহজ উপায়। LINQ কোডের সাথে একীভূতভাবে ডেটাবেস থেকে তথ্য অনুসন্ধান এবং ম্যানিপুলেশন করতে সাহায্য করে। LINQ এর মাধ্যমে ডেভেলপাররা C# ভাষায় SQL কোয়েরি লিখে ডেটা রিট্রাইভ, ফিল্টার, গ্রুপ এবং সাজাতে পারেন।
5. Change Tracker
EF এর Change Tracker ডেটা মডেল অবজেক্টের অবস্থা ট্র্যাক করে। যখন কোনো অবজেক্ট পরিবর্তিত হয়, তখন Change Tracker সেই পরিবর্তনকে শনাক্ত করে এবং ডেটাবেসে সেই পরিবর্তন সেভ করার জন্য প্রস্তুত করে। এটি ডেটাবেসের সাথে সিঙ্ক্রোনাইজেশন নিশ্চিত করতে সহায়তা করে।
6. Migrations
Migrations একটি গুরুত্বপূর্ণ ফিচার যা EF তে ডেটাবেস স্কিমার পরিবর্তন এবং আপডেট করতে ব্যবহৃত হয়। মাইগ্রেশন ডেভেলপারদের কোড-বেসের পরিবর্তনগুলো ডেটাবেসে অ্যাপ্লাই করতে সাহায্য করে। এটি ডেটাবেসের অবস্থা ট্র্যাক করে এবং সময়ের সাথে সাথে স্কিমা পরিবর্তনের জন্য স্বয়ংক্রিয় কোড জেনারেট করে, যা ডেটাবেসে পরিবর্তন কার্যকরী করে।
7. DbSet
DbSet EF এর মাধ্যমে ডেটাবেসের টেবিলের সাথে যোগাযোগ করতে ব্যবহৃত একটি ডেটা কালেকশন। এটি মূলত একটি টাইপড কালেকশন (যেমন একটি ক্লাসের অবজেক্টের তালিকা) যেখানে ডেটাবেসের টেবিলের ডেটা সংগ্রহ করা হয়। DbSet ক্লাসটি ব্যবহার করে ডেটা যোগ করা, মুছে ফেলা বা আপডেট করা হয় এবং এটি DbContext এর একটি অংশ হিসেবে কাজ করে।
1. DbContext এর ইনস্ট্যান্স তৈরি
প্রথমে DbContext ক্লাসের একটি ইনস্ট্যান্স তৈরি করা হয়, যা ডেটাবেসে সংযোগ স্থাপন করে। DbContext ক্লাসটি ডেটাবেসের সার্ভিস কনটেক্সট এবং অ্যাক্সেস কন্ট্রোলার হিসেবে কাজ করে।
2. Entity Models তৈরি
Entity Models তৈরি করা হয়, যা ডেটাবেসের টেবিলগুলির কাঠামো এবং সম্পর্কগুলিকে অবজেক্টস হিসেবে উপস্থাপন করে। Models গুলি DbContext ক্লাসে DbSet এর মাধ্যমে যুক্ত করা হয়।
3. ডেটা ম্যানিপুলেশন
DbContext এর মাধ্যমে ডেটাবেসে ডেটা ইনসার্ট, আপডেট, বা ডিলিট করা হয়। যখন কোনো ডেটা পরিবর্তন করা হয়, তখন EF সেই পরিবর্তনটি ট্র্যাক করে এবং সংশ্লিষ্ট SQL কমান্ড তৈরি করে।
4. Query Execution
LINQ এর মাধ্যমে ডেটাবেস থেকে ডেটা ফিল্টার বা সিলেক্ট করা হয়। EF LINQ কুয়েরিগুলি SQL এ কনভার্ট করে এবং ডেটাবেসে কার্যকরী করে।
5. Migrations
এখন যদি কোনো স্কিমার পরিবর্তন বা আপডেট করা হয়, তবে মাইগ্রেশন ফিচারের মাধ্যমে ডেটাবেসে সেই পরিবর্তনগুলো প্রভাবিত করা হয়। এটি ডেটাবেসের কাঠামো আপডেট করতে সাহায্য করে এবং ডেটাবেসের মধ্যে স্কিমার পরিবর্তন সিঙ্ক্রোনাইজ করে।
Entity Framework এর আর্কিটেকচার একটি শক্তিশালী ডেটাবেস-অর্নিয়েন্টেড ডিজাইন প্যাটার্ন, যা ডেটাবেসের সাথে ডেভেলপারদের কাজ করার প্রক্রিয়া সহজ এবং দ্রুত করে তোলে।
common.read_more