معرفی 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 تشکر