ZKWeb網頁框架2.1正式發佈

2.1.0更新的內容有html

  • 更新引用類庫
    • NHibernate 5.1.0
    • Npgsql 3.2.7
    • MySqlConnector 0.37.0
    • Dapper 1.50.4
    • Dommel 1.10.1
    • ZKWeb.System.Drawing 4.0.1
    • ZKWeb.Fork.FluentNHibernate 2.1.1
    • MongoDB.Driver 2.5.0
    • Microsoft.EntityFrameworkCore 2.0.2
    • Microsoft.EntityFrameworkCore.Design 2.0.2
    • Microsoft.EntityFrameworkCore.InMemory 2.0.2
    • Microsoft.EntityFrameworkCore.Sqlite 2.0.2
    • Microsoft.EntityFrameworkCore.SqlServer 2.0.2
    • Npgsql.EntityFrameworkCore.PostgreSQL 2.0.1
    • Pomelo.EntityFrameworkCore.MySql 2.0.1
    • System.Security.Cryptography.Algorithms 4.3.1
    • Microsoft.CodeAnalysis.CSharp 2.7.0
    • Microsoft.DiaSymReader.Native 1.7.0
    • Microsoft.DiaSymReader.PortablePdb 1.4.0
    • Microsoft.CSharp 4.4.1
    • Microsoft.Extensions.DependencyModel 2.0.4
    • Microsoft.CodeAnalysis.CSharp 2.6.1
    • Microsoft.AspNetCore.Hosting.Abstractions 2.0.2
    • Microsoft.AspNetCore.Http.Abstractions 2.0.2
    • MySql.Data 6.10.6
    • Microsoft.Data.Sqlite 2.0.1
    • Microsoft.Owin 4.0.0
    • Newtonsoft.Json 11.0.1
  • 修復Bug
    • 修復重用EFCore上下文沒有重置狀態的問題(前一個上下文失敗的提交會影響後面的上下文)
  • 改進插件系統
    • 支持禁止自動從新加載插件
    • 提供判斷加載哪些插件的函數
  • 改進ORM
    • 修改dapper的mysql提供器到MySqlConnector (以前是Pomelo.Data.MySql)
    • 讓ZKWeb.ORM.NHibernate支持.Net Standard 2.0 (除了Sqlite之外的數據庫均可用)
    • 支持記錄SQL語句或命令, 詳細查看下面的簡介或文檔記錄原始SQL語句或命令
  • 改進路由系統
  • 添加基於electron的項目建立器 (感謝@hunjixin的貢獻)

如何使用基於electron的項目建立器

Linux:
從Github的Release頁面下載並解壓縮 'ProjectCreator.Gui-linux-x64.zip'到'ZKWeb/Tools', 而後打開'ProjectCreator.Gui'.mysql

Windows:
從Github的Release頁面下載並解壓縮 'ProjectCreator.Gui-win32-x64.rar'到'ZKWeb/Tools', 而後打開'ProjectCreator.Gui.exe'.linux

記錄SQL語句或命令

記錄原始SQL語句或命令git

從ZKWeb 2.1開始, 你能夠經過提供IDatabaseCommandLogger來記錄原始的SQL語句或命令.
添加[ExportMany]屬性註冊到容器會全局記錄, 例如:github

[ExportMany]
public class Mylogger : IDatabaseCommandLogger {
    public void LogCommand(IDatabaseContext context, string command, object metadata) {
        Console.WriteLine(command);
    }
}

若是隻想記錄某個上下文的語句, 則不要添加[ExportMany]而是設置Context.CommandLogger = new Mylogger().
目前支持記錄SQL語句或命令的ORM有:web

  • Dapper: 支持記錄insert, update, delete, select
  • EFCore: 支持記錄insert, update, delete, select
  • MongoDB: 支持記錄json格式的命令
  • NHibernate: 支持記錄insert, update, delete, select, 但不支持記錄參數

隱式註冊Action

從ZKWeb 2.1開始, 經過在控制器類上標記[ActionBase]屬性, 或者在方法上標記[Action]屬性能夠控制訪問路徑.
例如:sql

[ExportMany]
public class ExampleController : IController {
    // 不標記[ActionBase]也不標記[Action]
    // 訪問路徑是 "/Example/PlainText"
    public IActionResult PlainText() {
        return new PlainResult("some plain text");
    }
}
[ExportMany]
[ActionBase("/MyExample")]
public class ExampleController : IController {
    // 標記[ActionBase]但不標記[Action]
    // 訪問路徑是 "/MyExample/PlainText"
    public IActionResult PlainText() {
        return new PlainResult("some plain text");
    }
}
[ExportMany]
[ActionBase("/MyExample")]
public class ExampleController : IController {
    // 同時標記[ActionBase]和[Action]
    // 訪問路徑是 "/MyExample/MyPlainText"
    [Action("MyPlainText")]
    public IActionResult PlainText() {
        return new PlainResult("some plain text");
    }
}
[ExportMany]
public class ExampleController : IController {
    // 不標記[ActionBase], 只標記[Action] (兼容2.0以前的版本)
    // [Action]標記的就是完整路徑
    // 訪問路徑是 "/MyPlainText"
    [Action("/MyPlainText")]
    public IActionResult PlainText() {
        return new PlainResult("some plain text");
    }
}

Core支持

由於NHibernate 5.1支持.Net Core, 基於NH編寫的商城系統(http://demo.zkweb.org)已經能夠在Linux上運行, 99%的功能均可用.
若是你使用ZKWeb框架建立新的項目,強烈推薦使用NHibernate而不是EFCore, 由於NHibernate的功能和.Net Framework上的同樣完整.數據庫

下個版本

下個版本預計會作的事情json

  • 更換EFCore到2.1版本(支持懶加載, 自定義列類型和部分複雜查詢)
  • 對接檸檬的APM系統, 提供網頁查詢性能和數據庫查詢性能的監控
相關文章
相關標籤/搜索