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重寫了文檔, 新的文檔可以在以下地址查看: