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