معرفی Entity Framework Core 1.1

دوشنبه 1 آذر 1395

(Entity Framework Core (EF Core یک نسخه سبک ، قابل گسترش و Cross-platform از EF است . در این مقاله به معرفی و بررسی Entity Framework Core 1.1 خواهیم پرداخت .

معرفی 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"
 },

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید