معرفی Entity Framework Core 1.1
دوشنبه 1 آذر 1395(Entity Framework Core (EF Core یک نسخه سبک ، قابل گسترش و Cross-platform از EF است . در این مقاله به معرفی و بررسی Entity Framework Core 1.1 خواهیم پرداخت .
چه چیزی در 1.1 میباشد ؟
نسخه 1.1 بیشتر بر روی مشکلات Addressing که از اتصال به EF Core جلوگیری میکرد ، تمرکز کرده است . همچنین یکسری باگ های آن را بر طرف کردند و یکسری ویژگی هایی که هنوز در EF Core پیاده سازی نشده اند را به آن اضافه کردند .
Bug های برطرف شده :
در نسخه ی انتشار یافته بیش از 100 حفره اطلاعاتی ، رفع شد .
بهبود ترجمه LINQ :
در نسخه منتشر شده 1.1 ، LINQ Provider در EF Core بهبود پیدا کرده است . این ، امکان اجرای کوئری های بیشتر را فراهم آورده است .
DbSet.Find :
(…)DbSet.Find یک API است که در EF6.x وجود دارد و و یکی از بیشترین درخواست ها برایEF Core میباشد .
این امکان را به شما میدهد که بر روی یک Entity با استفاده از Primary Key آن ، براحتی کوئری بزنید . اگر در حال حاضر Entity در Context بارگذاری شده باشد ، سپس بدون کوئری بر روی پایگاه داده آن را بازمیگرداند .
using (var db = new BloggingContext()) { var blog = db.Blogs.Find(1); }
طراحی و برنامه ریزی Fieldها :
متد جدید (...)HasField در Fluent API این امکان را به شما میدهد که یک backing field برای یک property ، پیکر بندی کنید . این میتواند برای مشخصه های Read-only یا داده هایی که به جای یک Property متدهای Get/Set دارند ، بسیار مفید باشد .
public class BloggingContext : DbContext { ... protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Blog>() .Property(b => b.Url) .HasField("_validatedUrl"); } }
بارگذاری صریح :
بارگذاری صریح امکان بارگذاری محتوای یک Navigation Property برای یک Entity که توسط Context اجاره شده است ، را به شما میدهد .
using (var db = new BloggingContext()) { var blog = db.Blogs.Find(1); db.Entry(blog).Collection(b => b.Posts).Load(); db.Entry(blog).Reference(b => b.Author).Load(); }
EntityEntry APIهای اضافه شده از EF6.x :
ما EntityEntry APIهایی که در EF6.x در دسترس بود را اضافه کردیم . این شامل ()Reload() , GetModifiedProperties() , GetDatabaseValues و ... میشود . این APIها معمولابا فراخوانی متد (DbContext.Entry(object entity ، مورد استفاده قرار میگیرند .
حالت ارتجاعی اتصال - Connection resiliency :
Connection resiliency دستورات failed شده پایگاه داده را Retries میکند. SQL Server Providerشامل یک استراتژی اجرا میباشد که بصورت ویژه ای با SQL Server شامل SQL Azure ، جفت و جور است .
این از نوع های Exeptionهایی که میتوانند رخ دهند آگاه است و به ماکزیمم تعداد Retries ، تاخیر بین Retries و ... بصورت پیش فرض حساس است
یک استراتژی اجرا زمانی که option هایی را برای Context پیکربندی میکنید ، میتواند مشخص شود . این معمولا در متد OnConfiguring از Context مشتق شده شما یا برای برنامه های ASP.Net Core میتواند در Startup.cs میباشد .
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder .UseSqlServer( "connection string", options => options.EnableRetryOnFailure()); }
SQL Server Memory - بهبود پشتیبانی از جداول :
Memory-Optimized table یک ویژگی از SQL Server است . حال شما میتوانید مشخص کنید که جدول یک Entity به map ، memory-optimized شده است .
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Blog>() .ForSqlServerIsMemoryOptimized(); }
جایگزینی سرویس ساده شده :
در EF Core 1.0 امکان جابجایی سرویس های داخلی که EF استفاده میکرد وجود داشت ، اما این مبهم بود و کنترل شما بروی dependency injection containrt ای که EF استفاده میکرد را نیاز داشت . در 1.1 با استفاده از متد ReplaceService در زمان پیکربندی Context ، این کار بسیار ساده تر میشود . بطور معمول این در متد OnConfiguring از Context مشتق شده یا برای برنامه های ASP.Net Core در Startup.cs میباشد .
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("connection string"); optionsBuilder.ReplaceService<SqlServerTypeMapper, MyCustomSqlServerTypeMapper>(); }
ارتقا به 1.1 :
اگر شما در حال حاضر ، در حال استفاده از یکی از SQL Provider های EF Team هستید ، میتوانید Package خود را با دستور زیر ارتقا دهید :
PM> Update-Package Microsoft.EntityFrameworkCore.SqlServer
ارتقا Tooling packageها :
اگر شما در حال استفاده از ASP.Net Core و دستورات Net EF. میباشید ، برای استفاده از package جدید Microsoft.EntityFrameworkCore.Tools.DotNet در پکیج Microsoft.EntityFrameworkCore.Tools از نسخه 1.0 ، نیاز به بروزرسانی tools section های project.json دارید :
json "tools": { "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" },
- برنامه نویسان
- 2k بازدید
- 5 تشکر