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系统, 提供网页查询性能和数据库查询性能的监控

ZKWeb网页框架2.1正式发布的更多相关文章

  1. ZKWeb网页框架2.0正式发布

    2.0.0更新的内容有 更新框架要求 框架要求从 netstandard 1.6 升到 netstandard 2.0 框架要求从 netcoreapp1.1 升到 netcoreapp2.0 更新引 ...

  2. ZKWeb网页框架2.2正式发布

    2.2.0更新的内容有 重构依赖注入容器 使用无锁算法 (可能导致不兼容) 使用 ContainerFactoryData 创建实例 (可能导致不兼容) 删除静态的 ContainerFactoryC ...

  3. ZKWeb网页框架1.8正式发布

    1.8.0更新的内容有 破坏性更新 更新ZKWeb.System.Drawing到3.0.0 请修改源代码中的System.Drawing到System.DrawingCore 现在已经不再需要使用D ...

  4. ZKWeb网页框架3.0正式发布

    3.0 更新的内容有 更新 .NET 框架 替换项目模版的 netcoreapp2.2 到 netcoreapp3.0 目前支持的 .NET 框架有: net461, netcoreapp2.0, n ...

  5. ZKWeb网页框架1.2正式发布

    发行日志 https://github.com/zkweb-framework/ZKWeb/blob/master/ReleaseNotes/ReleaseNote.1.2.md 主要改动 更新 ZK ...

  6. ZKWeb网页框架1.1正式发布

    发行日志 https://github.com/zkweb-framework/ZKWeb/blob/master/ReleaseNotes/ReleaseNote.1.1.md 主要改动 添加EFC ...

  7. ZKWeb网页框架1.9正式发布

    1.9.0更新的内容有 更新项目工具 更好的支持Linux 添加工具函数 Exception.ToDetailedString (获取例外的详细信息) Exception.ToSummaryStrin ...

  8. ZKWeb网页框架1.7正式发布

    1.7.0更新的内容有 更新项目格式到新的csproj 更新项目模板 打开新创建的Asp.Net Core项目将需要VS 2017,Asp.Net和Owin项目仍可以用VS 2015 补上插件模板的P ...

  9. ZKWeb网页框架1.6正式发布

    1.6.0更新的内容有 Dapper改进 更换Dapper.Contrib到Dommel 支持自定义列名的设置 支持忽略未映射的成员 支持插入Guid类型到MySQL数据库 支持JSON序列化类型 遇 ...

随机推荐

  1. 关于servelt的相关介绍

    1.@WebServlet注解的作用 在Servlet 3.0中,使用@WebServlet注解可实现servlet和url的映射,它告知容器哪些Servlet会提供服务以及额外信息,其作用相当于之前 ...

  2. Ocelot的学习

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.认证.鉴权.简单缓存.限流熔断.负载均衡器等.简单的来说Ocelot是一堆的asp.net core midd ...

  3. python requests库爬取网页小实例:ip地址查询

    ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...

  4. Linux 学习笔记 3:Shell 基础

    1.Shell的工作原理 Shell是用户和操作系统之间的接口.当用户登录系统,有一个Shell进程随之启动,并在用户注销时终止.用户输入的命令是Shell输入. 处理命令的步骤:查找命令中的元字符: ...

  5. 关于TCP窗口大小

    窗口字段 TCP Window字段用于接收端通知发送端:接收端当前能够接收的字节数(即当前允许发送端发送的字节数).在TCP Header中占有16bit长度,如下所示 0 1 2 3 0 1 2 3 ...

  6. Ubuntu16.04 静态IP设置

    为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址NAT方式 1.安装环境 VMware 12 Ubuntu 16.04 x86_64 2.在VMware中,配置网络环境 VMwar ...

  7. Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分

    D. Mahmoud and a Dictionary time limit per test:4 seconds memory limit per test:256 megabytes input: ...

  8. SystemUI中设置横竖屏显示

    SystemUI中快捷菜单有 “方向锁定” . RotationLockTile protected void handleClick() { if (mController == null) ret ...

  9. Vmware Workstation添加centos 7系统网络问题(无IP情况)

    简单配置 命令行输入ip addr 查询不到IP的情况,如下: 解决办法: 1. vi  /etc/sysconfig/network-scripts/ifcfg-ens33 2. 最后一行,ONBO ...

  10. WebApi零碎总结

    1.如果Content-Type是application/json,而POST和PUT的参数是[FromBody] string value,那么如果curl -d的值是'{"Name&qu ...