Entity Framework Core 1.1 升级通告
Entity Framework Core(EF Core)是一個(gè)輕量級(jí)的,可擴(kuò)展和實(shí)體框架的跨平臺(tái)版本。今天,我們宣布 Entity Framewor Core 1.1 正式可用了。
EF Core 和 .NET Core 遵循相同的發(fā)行周期。每2個(gè)月不斷的改進(jìn)和每6個(gè)月的新功能發(fā)布。這是自1.0的第一個(gè)功能版本。
請(qǐng)務(wù)必閱讀位于這個(gè)帖子的末尾的升級(jí)到1.1這個(gè)章節(jié),有相關(guān)升級(jí)到1.1版本重要信息。
1.1 版本有什么
1.1版本的重點(diǎn)是解決人們采用EF Core 中遇到的問題。這包括修正了bug,增加了一些的那些尚未在EF Core實(shí)現(xiàn)的重要功能。雖然我們已經(jīng)取得了這方面的一些良好的進(jìn)展,但是我們也承認(rèn)EF Core 仍然不會(huì)是對(duì)大家來說最好的選擇,更多詳細(xì)信息可以看這篇?EF Core和EF6.x比較。
Bug修復(fù)
在1.1版本有包含超過100個(gè)bug的修復(fù)。參見?EF Core 1.1 版本說明了解更多詳情。
改進(jìn)LINQ翻譯
在1.1版本中,我們?cè)谔岣週inq 對(duì) EF Core 的支持取得了良好的進(jìn)展。這使得更多的查詢成功執(zhí)行,有更多的邏輯在數(shù)據(jù)庫進(jìn)行執(zhí)行(而不是在內(nèi)存中)。
DbSet.Find
DbSet.Find(...)是存在于EF6.x并在 EF Core 中比較常見的一個(gè) API。它可以讓你方便地查詢基于其主鍵值的實(shí)體。如果實(shí)體已經(jīng)加載到上下文,則它直接返回而不再次查詢數(shù)據(jù)庫。
using (var db = new BloggingContext()) { ? ?var blog = db.Blogs.Find(1); }映射字段
新的流式API?HasField(...)?方法 允許你在屬性中配置一個(gè)數(shù)據(jù)庫不同名字的字段。
這對(duì)于只讀屬性是非常有用的,而不是一個(gè) get / set的屬性。有關(guān)詳細(xì)的指導(dǎo),請(qǐng)參閱我們的文檔中的Backing Field相關(guān)文章。
顯式加載
顯式加載允許您加載DBContext上下文中跟蹤到的實(shí)體的導(dǎo)航屬性里面的內(nèi)容。欲了解更多信息,請(qǐng)參見我們的文檔中的加載相關(guān)數(shù)據(jù)文章。
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(); }從 EF6.x 增加的 EntityEntry的API
我們已經(jīng)加入在EF6.x.是可用的但是還沒有添加到 EF Core 中的EntityEntry的相關(guān) API, 這包括?Reload(),?GetModifiedProperties(),?GetDatabaseValues()等。這些API一般通過?DbContext.Entry(object entity)?調(diào)用。
彈性連接
彈性連接將會(huì)自動(dòng)重試失敗的數(shù)據(jù)庫命令。SQL Server提供了一個(gè)專門針對(duì)SQL Server的執(zhí)行策略(包括SQL Azure的)。識(shí)別到異常類型,可以重試并且為最大重試設(shè)置合理的默認(rèn)值,重試之間的延遲等。更多信息,可以在我們的文檔請(qǐng)參閱彈性連接的文章。
其實(shí)一個(gè)就是給你的數(shù)據(jù)庫上下文配置執(zhí)行策略,在 ASP.NET Core 應(yīng)用程序中,通常情況下是在?OnConfiguring方法中,或者是在?Startup.cs?里面。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseSqlServer( ? ? ? ? ? ?"connection string",options => options.EnableRetryOnFailure()); }支持 SQL Server 內(nèi)存優(yōu)化表
內(nèi)存優(yōu)化表是SQL Server 2014+ 的功能。現(xiàn)在,您可以指定一個(gè)實(shí)體映射到內(nèi)存優(yōu)化表。欲了解更多信息,請(qǐng)參閱我們的文檔中的內(nèi)存優(yōu)化表文章。
protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().ForSqlServerIsMemoryOptimized(); }簡(jiǎn)化 service 替換
在EF Core 1.0中你可以取代EF使用其內(nèi)部服務(wù),但這是很復(fù)雜的,需要你拿到 EF依賴注入容器的控制權(quán)來使用。在1.1中,這個(gè)要簡(jiǎn)單得多。在配置上下文時(shí)候使用ReplaceService(...)?方法就行了。在 ASP.NET Core 應(yīng)用程序中,這通常是在Startup.cs?文件中的?OnConfiguring(...)?方法中。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseSqlServer("connection string");optionsBuilder.ReplaceService<SqlServerTypeMapper, MyCustomSqlServerTypeMapper>(); }升級(jí)到1.1
如果您正在使用的EF團(tuán)隊(duì)提供的連接數(shù)據(jù)庫的程序包(SQL Server, SQLite, InMemory),那就升級(jí)提供的程序包就行了。
PM> Update-Package Microsoft.EntityFrameworkCore.SqlServer如果您使用的是第三方數(shù)據(jù)庫提供程序,檢查一下看看他們是否已經(jīng)發(fā)布新版本,它取決于1.1.0更新。如果他們有,那么就升級(jí)到新版本。如果沒有, 那么你應(yīng)該能夠升級(jí)他們依賴的EF Core Relational 組件。大部分的新特性數(shù)據(jù)庫組件提供者在1.1不需要修改。我們已經(jīng)做了一些測(cè)試,以確保數(shù)據(jù)庫提供商依賴1.0和1.1,但沒有做詳盡的測(cè)試。
PM> Update-Package Microsoft.EntityFrameworkCore.Relational升級(jí)工具包
如果您正在使用Tools 工具包,那肯定就要升級(jí)了。需要注意的是Tools版本為 1.1.0-preview4 因?yàn)門ools還沒有達(dá)到其穩(wěn)定版本。
PM> Update-Package Microsoft.EntityFrameworkCore.Tools -Pre如果你在使用 ASP.NET Core,使用dotnet ef命令,那么你需要更新 project.json 的Tools部分使用新?Microsoft.EntityFrameworkCore.Tools.DotNet?包取代?Microsoft.EntityFrameworkCore.Tools?1.0 的包。由于.NET Cli,所以對(duì)我們來說分離dotnet ef到這個(gè)單獨(dú)的包已經(jīng)是必要的了。
json"tools": { ? "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"},原文地址:http://www.cnblogs.com/savorboard/p/efcore11-announcing.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Entity Framework Core 1.1 升级通告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Consul 服务注册与服务发现
- 下一篇: 使用熔断器设计模式保护软件