
Entity Framework Core چیست؟
در این آموزش بررسی میکنیم که Entity Framework Core چیست و چه کاربردی دارد. در واقع، Entity Framework Core یا بهاختصار EF Core یک فریمورک سبک و متنباز برای ORM است. همچنین، این فریمورک بخشی از اکوسیستم .NET محسوب میشود. هدف اصلی EF Core فراهمکردن روشی ساده و قابل توسعه برای کار با دادههای پایگاهدادههای رابطهای است. بنابراین، توسعهدهندگان میتوانند با دادهها بهصورت شیگرا کار کنند. در نتیجه، نیاز به نوشتن مستقیم کوئریهای SQL نیز به حداقل میرسد.
EF Core نسخه جدیدتر Entity Framework است که مایکروسافت آن را برای توسعه برنامههای مدرن .NET ارائه کرده است. علاوه بر این، EF Core از قابلیت Cross-Platform پشتیبانی میکند. به همین دلیل، برنامههای ساختهشده با آن میتوانند روی ویندوز، لینوکس و macOS اجرا شوند. همچنین، EF Core در مقایسه با نسل قبلی Entity Framework سبکتر و توسعهپذیرتر است. از سوی دیگر، این فریمورک روش سادهتری برای ارتباط با پایگاهداده ارائه میدهد. در حال حاضر، EF Core یکی از ORMهای اصلی مایکروسافت برای توسعهدهندگان .NET است.
ORM چیست؟
ORM یک لایه واسط میان کلاسهای زبان برنامهنویسی و دادههای ذخیرهشده در پایگاهداده است. به عبارت دیگر، وظیفه ORM نگاشت اطلاعات موجود در پایگاهداده روی کلاسهای برنامه است. قبل از پیدایش ORM، برنامهنویسان این کار را بهصورت دستی انجام میدادند. برای مثال، نام جدولها، ستونها و نوع دادهها باید بهصورت دستی در کد مشخص میشد. در نتیجه، انجام این فرایند طولانی و همراه با احتمال خطا بود.
علاوه بر این، حتی یک تغییر کوچک در نام ستونها یا ساختار جدولها میتوانست باعث ایجاد خطا شود. گاهی نیز این خطاها باعث میشدند قسمتهایی از برنامه از کار بیفتند. به همین دلیل، امروزه بیشتر برنامهنویسان از ORMها استفاده میکنند.
EF Core از چه پایگاهدادههایی پشتیبانی میکند؟
Entity Framework Core از تعداد زیادی پایگاهداده پشتیبانی میکند. با این حال، برای اتصال به هر پایگاهداده باید Provider یا پکیج NuGet مناسب آن را نصب کنیم. برای مثال، برای کار با SQL Server از پکیج Microsoft.EntityFrameworkCore.SqlServer استفاده میشود. علاوه بر این، هر Provider ممکن است فقط از نسخههای مشخصی از EF Core پشتیبانی کند. بنابراین، قبل از نصب هر پکیج باید نسخه سازگار آن را بررسی کنید.
پکیجهای رسمی مایکروسافت
ابتدا، میتوانیم از Providerهای رسمی مایکروسافت استفاده کنیم. در واقع، این پکیجها برای پایگاهدادههای پرکاربرد مایکروسافت و SQLite ارائه شدهاند.
| NuGet Package | Supported database engines | For EF Core |
|---|---|---|
| Microsoft.EntityFrameworkCore.SqlServer | Azure SQL and SQL Server 2012 onwards | 6, 7, 8 |
| Microsoft.EntityFrameworkCore.Sqlite | SQLite 3.7 onwards | 6, 7, 8 |
| Microsoft.EntityFrameworkCore.InMemory | EF Core in-memory database | 6, 7, 8 |
| Microsoft.EntityFrameworkCore.Cosmos | Azure Cosmos DB SQL API | 6, 7, 8 |
Providerهای پایگاهدادههای پرکاربرد
علاوه بر پکیجهای رسمی مایکروسافت، Providerهای دیگری نیز برای پایگاهدادههای معروف وجود دارند. برای مثال، PostgreSQL، MySQL، MariaDB، Oracle و MongoDB دارای Providerهای مخصوص هستند.
| NuGet Package | Supported database engines | For EF Core |
|---|---|---|
| Npgsql.EntityFrameworkCore.PostgreSQL | PostgreSQL | 6, 7, 8 |
| Pomelo.EntityFrameworkCore.MySql | MySQL, MariaDB | 6, 7, 8 |
| MySql.EntityFrameworkCore | MySQL | 6, 7 |
| Oracle.EntityFrameworkCore | Oracle DB 11.2 onwards | 6, 7 |
| MongoDB.EntityFrameworkCore | MongoDB | 8 |
| Devart.Data.MySql.EFCore | MySQL 5 onwards | 6, 7, 8 |
| Devart.Data.Oracle.EFCore | Oracle DB 9.2.0.4 onwards | 6, 7, 8 |
| Devart.Data.PostgreSQL.EFCore | PostgreSQL 8.0 onwards | 6, 7, 8 |
| Devart.Data.SQLite.EFCore | SQLite 3 onwards | 6, 7, 8 |
| Devart.Data.DB2.EFCore | DB2 | 6, 7, 8 |
Providerهای سرویسها و نرمافزارهای تجاری
از سوی دیگر، برخی Providerها برای اتصال EF Core به سرویسها و نرمافزارهای تجاری ساخته شدهاند. برای مثال، میتوان به Dynamics 365، Salesforce، Magento و QuickBooks اشاره کرد.
| NuGet Package | Supported database engines | For EF Core |
|---|---|---|
| Devart.Data.Bigcommerce.EFCore | BigCommerce | 6, 7, 8 |
| Devart.Data.Dynamics.EFCore | Microsoft Dynamics 365 | 6, 7, 8 |
| Devart.Data.FreshBooks.EFCore | FreshBooks | 6, 7, 8 |
| Devart.Data.Magento.EFCore | Magento | 6, 7, 8 |
| Devart.Data.MailChimp.EFCore | Mailchimp | 6, 7, 8 |
| Devart.Data.QuickBooks.EFCore | QuickBooks | 6, 7, 8 |
| Devart.Data.Salesforce.EFCore | Salesforce | 6, 7, 8 |
| Devart.Data.ExactTarget.EFCore | Salesforce MC (ExactTarget) | 6, 7, 8 |
| Devart.Data.Sugar.EFCore | SugarCRM | 6, 7, 8 |
| Devart.Data.Zoho.EFCore | Zoho CRM | 6, 7, 8 |
| MASES.EntityFrameworkCore.KNet | Apache Kafka | 6, 7, 8 |
سایر Providerهای EF Core
در نهایت، Providerهای دیگری نیز برای پایگاهدادهها و روشهای ذخیرهسازی خاص وجود دارند. با این حال، بعضی از این پکیجها قدیمی یا آزمایشی هستند. بنابراین، قبل از استفاده باید وضعیت توسعه و نسخه سازگار آنها بررسی شود.
| NuGet Package | Supported database engines | For EF Core |
|---|---|---|
| InterBase | InterBase | 6 |
| FirebirdSql.EntityFrameworkCore.Firebird | Firebird 3.0 onwards | 8 |
| IBM.EntityFrameworkCore | Db2, Informix | 6 |
| IBM.EntityFrameworkCore-Inx | Db2, Informix | 6 |
| IBM.EntityFrameworkCore-osx | Db2, Informix | 6 |
| EntityFrameworkCore.Jet | Microsoft Access files | 6, 7, 8 (Preview) |
| Google.Client.EntityFrameworkCore.Spanner | Google Cloud Spanner | 6 |
| Teradata.EntityFrameworkCore | Teradata Database 16.10 onwards | 3 |
| FileContextCore | Stores data in files | 3 |
| FileBaseContext | Stores tables in files | 7, 8 |
| EntityFrameworkCore.SqlServerCompact35 | SQL Server Compact 3.5 | 2 |
| EntityFrameworkCore.SqlServerCompact40 | SQL Server Compact 4.0 | 2 |
| EntityFrameworkCore.OpenEdge | Progress OpenEdge | 2 |
ویژگیهای کلیدی Entity Framework Core
EF Core ویژگیهای مختلفی برای سادهترکردن ارتباط برنامه با پایگاهداده ارائه میدهد. در ادامه، مهمترین ویژگیهای آن را بررسی میکنیم.
آسانتر شدن تغییر پایگاهداده
برای مثال، ممکن است ابتدا برنامه خود را با پایگاهداده SQL Server ایجاد کنید. سپس، بعد از مدتی تصمیم بگیرید پایگاهداده را به SQLite تغییر دهید. در این شرایط، EF Core فرایند تغییر Provider پایگاهداده را سادهتر میکند. با این حال، تغییر پایگاهداده همیشه کاملاً خودکار نیست. در واقع، ممکن است بعضی از قسمتهای وابسته به امکانات خاص یک پایگاهداده همچنان به تغییر نیاز داشته باشند.
چندسکویی بودن EF Core
یکی دیگر از مزایای EF Core، قابلیت Cross-Platform آن است. بنابراین، برنامههای ساختهشده با EF Core میتوانند روی سیستمعاملهای مختلف اجرا شوند. برای مثال، این فریمورک روی ویندوز، لینوکس و macOS قابل استفاده است.
کوئرینویسی با استفاده از LINQ
با استفاده از Entity Framework Core میتوانیم کوئریهای موردنیاز را با LINQ بنویسیم. سپس، EF Core این کوئریها را به دستورهای قابلفهم برای پایگاهداده تبدیل میکند. علاوه بر این، استفاده درست از کوئریهای پارامتری EF Core خطر حملات SQL Injection را تا حد زیادی کاهش میدهد. با این حال، توسعهدهنده همچنان باید اصول امنیتی را هنگام دریافت و پردازش اطلاعات رعایت کند.
پشتیبانی از پایگاهدادههای مختلف
همانطور که در جدولها مشاهده کردید، EF Core از پایگاهدادههای مختلف پشتیبانی میکند. برای مثال، SQL Server، SQLite، PostgreSQL، MySQL، Oracle و Azure Cosmos DB دارای Providerهای مخصوص هستند. علاوه بر این، شرکتها و توسعهدهندگان دیگر نیز Providerهای مختلفی برای EF Core ارائه کردهاند. بنابراین، توسعهدهنده میتواند متناسب با نیاز پروژه، Provider مناسب را انتخاب کند.
متنباز بودن EF Core
یکی دیگر از مزایای Entity Framework Core، متنباز یا Open Source بودن آن است. در نتیجه، کد منبع EF Core در GitHub در دسترس قرار دارد. همچنین، توسعهدهندگان میتوانند در توسعه آن مشارکت کنند. علاوه بر این، استفاده از EF Core رایگان است. البته، باید توجه داشت که Entity Framework 6 نیز اکنون بهصورت متنباز ارائه میشود. بنابراین، متنباز بودن بهتنهایی تفاوت اصلی میان این دو نسخه نیست.
کاهش نیاز به نوشتن کد SQL
EF Core به شما اجازه میدهد بخش زیادی از منطق مربوط به دادهها را با زبان C# پیادهسازی کنید. در نتیجه، در بسیاری از قسمتهای برنامه نیازی به نوشتن مستقیم SQL نخواهید داشت. با این حال، EF Core امکان اجرای SQL خام را نیز فراهم میکند. بنابراین، در شرایط خاص یا برای بعضی از کوئریهای پیچیده همچنان میتوان از دستورهای SQL استفاده کرد.
جمعبندی
در نهایت، EF Core ارتباط میان برنامههای .NET و پایگاهداده را سادهتر میکند. علاوه بر این، قابلیتهایی مانند LINQ، مدیریت ارتباط میان جدولها و پیگیری تغییرات دادهها را در اختیار توسعهدهندگان قرار میدهد. بنابراین، استفاده از EF Core میتواند سرعت توسعه و نگهداری برنامه را افزایش دهد. بهطور خلاصه، اگر با .NET و پایگاهدادههای رابطهای کار میکنید، EF Core یکی از ابزارهای مهم و کاربردی برای پروژه شما خواهد بود.
فایل ارائه
خرید از تهران آی تی به صورت آنلاین میباشد و لینک دانلود به صورت خودکار برای شما ایمیل میشود. همه گزینهها همان فایل کامل را به شما میدهند. تفاوت فقط در نحوه جبران هزینه است؛ انتخاب با وجدان شماست. چنانچه نیاز به هرگونه سوال و یا کمک در خرید آنلاین داشتید با شماره 09121486770 تماس بگیرید. شماره کارت ما 6362141104352035 به نام محمدرضا احدیان میباشد.
































فرم افزودن دیدگاه
با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.