2.0.0更新的内容有
- 更新框架要求
- 框架要求从 netstandard 1.6 升到 netstandard 2.0
- 框架要求从 netcoreapp1.1 升到 netcoreapp2.0
- 更新引用类库
- Microsoft.AspNetCore.Hosting.Abstractions 2.0.0
- Microsoft.AspNetCore.Http.Abstractions 2.0.0
- Microsoft.Extensions.DependencyInjection 2.0.0
- Microsoft.Extensions.DependencyInjection.Abstractions 2.0.0
- Microsoft.Extensions.DependencyModel 2.0.0
- Microsoft.Data.Sqlite 2.0.0
- Npgsql 3.2.5
- Microsoft.EntityFrameworkCore 2.0.0
- Microsoft.EntityFrameworkCore.Design 2.0.0
- Microsoft.EntityFrameworkCore.InMemory 2.0.0
- Microsoft.EntityFrameworkCore.Sqlite 2.0.0
- Microsoft.EntityFrameworkCore.SqlServer 2.0.0
- Npgsql.EntityFrameworkCore.PostgreSQL 2.0.0
- Pomelo.EntityFrameworkCore.MySql 2.0.0
- MongoDB.Driver 2.4.4
- ZKWeb.Repack.SQLite 1.0.104
- Microsoft.CSharp 4.4.0
- Microsoft.CodeAnalysis.CSharp 2.3.0
- Newtonsoft.Json 10.0.3
- ZKWeb.Fork.DotLiquid 2.3.0
- ZKWeb.Fork.FastReflection 2.3.0
- Dommel 1.9.0
- Dapper.FluentMap 1.6.0
- Dapper.FluentMap.Dommel 1.5.0
- 删除NSubstitute
- 改进IoC容器
- 支持区域(Scoped)重用
- 支持注册开放泛型(注册
Implement<>
到Service<>
) - 支持从IServiceCollection注册服务
- 提供IServiceProvider接口
- 改变选择构造函数的规则
- 首先, 使用标记了
[Inject]
的构造函数 - 然后, 使用唯一的公开的构造函数
- 最后, 使用
IMultiConstructorResolver
在运行时解决, 如果解决失败则抛出异常
- 首先, 使用标记了
- 改变注入构造函数的规则
- 支持注入
Func<T>
- 支持注入
Lazy<T>
- 支持注入
List<T>
,ICollection<T>
,IEnumerable<T>
- 支持注入
Lazy<List<T>>
,Func<List<T>>
等等 - 如果参数有默认值, 则解决失败时使用默认值, 否则解决失败时抛出异常
- 支持注入
- 在Asp.Net Core项目中默认使用ZKWeb的IoC容器替换默认的IServiceProvider
- 目前Asp.Net Core和ZKWeb注册的服务已可以共通互联
- 改进控制器和路由
- 遵从控制器注册时使用的重用规则, 在之前的版本控制器会是单例
- 支持手动重载请求参数, 设置
Request.CustomParameters
可以影响获取当前请求参数的值 - 支持Url参数, 例如
[Action("get/{id}")]
- 改进ORM
- 支持在构建数据库上下文时手动传入实体类型列表, 在一个项目使用多个数据库上下文时可以用到
- 添加
EFCoreDatabaseContextPool
, 改进EFCore数据库上下文的创建性能 - 在NHibernate保存实体失败时取消对该实体的跟踪, 防止影响后面的保存
本次更新要求.Net Standard 2.0, 旧版本的项目需要先修改框架目标再使用nuget升级.
本次更新删除了NSubstitute的引用, 如果原有插件有使用NSubstitute请手动安装到web项目.
因为NHibernate官方尚未发布.Net Core版本, 这一个版本的NHibernate仍然只能用在.Net Framework上, 下个版本会争取让使用NHibernate的代码支持.Net Core.
此外, ZKWeb 2.0重写了文档, 新的文档可以在以下地址查看: