• ZKWeb网页框架2.1正式发布


    2.1.0更新的内容有

    • 更新引用类库
      • 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'.

    Windows:
    从Github的Release页面下载并解压缩 'ProjectCreator.Gui-win32-x64.rar'到'ZKWeb/Tools', 然后打开'ProjectCreator.Gui.exe'.

    记录SQL语句或命令

    记录原始SQL语句或命令

    从ZKWeb 2.1开始, 你可以通过提供IDatabaseCommandLogger来记录原始的SQL语句或命令.
    添加[ExportMany]属性注册到容器会全局记录, 例如:

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

    如果只想记录某个上下文的语句, 则不要添加[ExportMany]而是设置Context.CommandLogger = new Mylogger().
    目前支持记录SQL语句或命令的ORM有:

    • Dapper: 支持记录insert, update, delete, select
    • EFCore: 支持记录insert, update, delete, select
    • MongoDB: 支持记录json格式的命令
    • NHibernate: 支持记录insert, update, delete, select, 但不支持记录参数

    隐式注册Action

    从ZKWeb 2.1开始, 通过在控制器类上标记[ActionBase]属性, 或者在方法上标记[Action]属性可以控制访问路径.
    例如:

    [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上的一样完整.

    下个版本

    下个版本预计会做的事情

    • 更换EFCore到2.1版本(支持懒加载, 自定义列类型和部分复杂查询)
    • 对接柠檬的APM系统, 提供网页查询性能和数据库查询性能的监控
  • 相关阅读:
    python 获取qq群成员列表数据
    selenium定位伪类元素::before
    flask 重写HTTPException类并自定义异常信息
    flask 工厂模式与celery结合
    重写flask_sqlalchemy的BaseQuery下面的filter_by方法
    Pytest系列
    Pytest系列- 多重校验插件之pytest-assume的详细使用
    mysql 主主+ Keepalived 高可用
    redis 主从配置,主从切换
    FastDFS 学习笔记
  • 原文地址:https://www.cnblogs.com/zkweb/p/8648568.html
Copyright © 2020-2023  润新知