1. 安裝新 .Net Core SDK 2.1
2. 升級VS.net 到15.7, 這個版本極其不好用,IIS打中文會自動退出,但現在也沒辦法降級了.只能等微軟打補丁.
3. 對於面向 ASP.NET Core 2.1 及更高版本的應用程序,建議使用 Microsoft.AspNetCore.App 而不是Microsoft.AspNetCore.All
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/metapackage?view=aspnetcore-2.1
4. 多了warning和sql injection detection
@Html.PartialAsync("_Header")
5. NLog.config, 重新設置一下 copy to bin :always
升級到.Net Core 2.1, 我在Mac上的Mysql連接不了,因為現在只支持.Net Core 2.0, 沒辦法只能降回2.0, 現在已經支持2.1了. 而且2.1是長期支持的版本. 還是要升級上去的.
但是project文件改tareget framework沒有用,我只能找回幾天前的project文件替換.
6. EF Core 2.1 支持 Lazy Loading, Model里定義為虛 virtual屬性的字段,可以延遲加載
Install-Package Microsoft.EntityFrameworkCore.Proxies -Version 2.1.1
Startup.cs的configureSerice里增加
services.AddDbContext<SchoolContext>(options => options.UseLazyLoadingProxies().UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); //如果未在Context中添加UseLazyLoadingProxies,導航屬性不會添加
在實體框架Entity Framework 6及之前的版本中,數據模型的導航屬性只要加上virtual關鍵字,在你訪問這個屬性的時候(不管是對象還是對象集合),EF的內部機制就會自動加載相關數據。
這一特性就稱之為Lazy Loading,其為開發帶來極大方便(尤其需要快速開發的時候),因為不用操心去查詢關聯數據。當然缺點也很明顯,就是這種查詢方式其實是低效的,且在某些情況下使用不當也會造成性能問題。
當然除了使用Lazy Loading外,你還可以使用Include來預先加載關聯數據(執行一次查詢返回多個數據結果),此特性稱之為Eagerly Loading。
在EF6.x和EF Core 中,Include的使用基本一致,不過在加載多級數據的時候就有所不同了。EF6.x的方式比較簡單直接,詳細見:https://msdn.microsoft.com/zh-cn/data/jj574232#eagerLevels,
在EF Core 中就需要用到新的ThenInclude方法。詳細用法見下面的示例代碼:
var get = await db2.Sites
.Include(o => o.ArticleColumns).ThenInclude(o => o.Categories)
.SingleOrDefaultAsync(o => o.Id == site.Id);
參考: http://www.cnblogs.com/dudu/p/9009295.html
