Entity Framework Core یک تکنولوژی جدید برای دسترسی به پایگاه داده می باشد. در اصل این تکنولوژی طراحی شده است تا توسعه دهندگان نرم افزار قادر باشند Domain Class های خود را طراحی نموده و بعد با آن ها به عنوان جداول رابطه ای کار کنند.
EF Core یک ORM یا object-relational mapper است که امکان کار با بانک های اطلاعاتی مختلف را از طریق اشیاء NET. میسر می کند. توسط EF Core قسمت عمده کدهای مستقیم کار با بانک اطلاعاتی حذف شده و تبدیل به کدهای NET. می شوند. کار با اشیاء NET. و LINQ، مزایایی نظیر تحت نظر قرار گرفتن کدها توسط کامپایلر و برخورداری از ابزارهای Refactoring پیشرفته را میسر می کند.
Entity Framework Core نسخه جدید Entity Framework بعد از EF 6.x است. Entity Framework Core سبک، قابل توسعه، open source و یک نسخه multi-platform از تکنولوژی دسترسی به داده Entity Framework است.
Entity Framework Core یک ORM (Object Relational Mapping) است و به برنامه نویسان یک مکانیزم خودکار برای دسترسی و ذخیره داده ها در دیتابیس را می دهد.
EF Core برای استفاده با برنامه های NET Core. در نظر گرفته شده است. با این وجود، می توان از آن با برنامه های استاندارد NET +4.5 استفاده کرد.
شکل زیر پشتیبانی از انواع برنامه های چارچوب های دات نت و سیستم عامل را نشان می دهد.
EF Core از دو رویکرد توسعه پشتیبانی می کند
- Code-First
- Database-First
EF Core عمدتا رویکرد Code-First را دنبال می کند و از رویکرد Database-First پشتیبانی چندانی نمی کند. در رویکرد Code-First، EF Core API پایگاه داده و جداول را با استفاده از migration بر اساس قراردادها و پیکربندی های موجود در Domain class های شما ایجاد می کند. این روش در Domain Driven Design مفید است.
EF Core vs EF 6
Entity Framework Core نسخه جدید و بهبود یافته Entity Framework برای برنامه های NET Core. است. EF Core جدید است، بنابراین هنوز به اندازه EF 6 بالغ نیست. EF Core همچنان از ویژگی ها و مفاهیم زیر، مانند EF 6 پشتیبانی می کند.
- DbContext & DbSet
- Data Model
- Querying using Linq-to-Entities
- Change Tracking
- SaveChanges
- Migrations
EF Core بسیاری از ویژگی های EF 6 را به تدریج شامل می شود. با این حال، برخی از ویژگی های EF 6 وجود دارد که در EF Core پشتیبانی نمی شوند مانند:
- EDMX/ Graphical Visualization of Model
- Entity Data Model Wizard (for DB-First approach)
- ObjectContext API
- Querying using Entity SQL.
- Automated Migration
- Inheritance: Table per type (TPT)
- Inheritance: Table per concrete class (TPC)
- Many-to-Many without join entity
- Entity Splitting
- Spatial Data
- Lazy loading of related data
- Stored procedure mapping with DbContext for CUD operation
- Seed data
- Automatic migration
EF Core شامل ویژگی های جدید زیر است که در EF 6.x پشتیبانی نمی شوند:
- Easy relationship configuration
- Batch INSERT, UPDATE, and DELETE operations
- In-memory provider for testing
- Support for IoC (Inversion of Control)
- Unique constraints
- Shadow properties
- Alternate keys
- Global query filter
- Field mapping
- DbContext pooling
- Better patterns for handling disconnected entity graphs
EF Core Database Providers
Entity Framework Core از یک مدل Provider برای دسترسی به بسیاری از Database های مختلف استفاده می کند. EF Core شامل Providerهایی به عنوان بسته های NuGet است که شما باید نصب کنید. در جدول زیر Providerهای پایگاه داده و بسته های NuGet برای EF Core آورده شده است.