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. requests+django+bs4实现一个web微信的功能

    前言: 今天我们利用requests模块+django+bs4浏览器来实现一个web微信的基本功能,主要实现的功能如下 a.实现返回二维码 b.实现手机扫码后二维码变成变成头像 c.实现手机点击登陆成 ...

  2. CentOS7下开放端口

    memcached等服务启动后,外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问这些端口号. 方法一:使用firewall 1.运行命令:firewall-cmd --get-a ...

  3. node.js 从入门到。。。

    本人安装环境为 mac ,所以只记录了 mac 下的操作步骤 1.安装 node node的国内下载地址:http://nodejs.cn/download/ 安装之后,在终端输入指令 node -v ...

  4. python读取数据库出txt报表

    python出报表使用到了数据库访问,文件读写,字符串切片处理.还可以扩展到电子邮件的发送,异常处理以及定时批任务. 总之在学习中发现还是有蛮多乐趣在其中. #coding=utf-8 ' impor ...

  5. EventEmitter事件处理器中的this问题

    JavaScript中的this是一个比较绕的问题,有非常非常多的文章在讲这件事,这里推荐一篇文章,看了这篇文章基本上就能弄明白了. 这篇文章讲了关于this的一个基本原则: 包含this的Funct ...

  6. [原创]自定义参数静默方式安装JDK1.8

    摘要:当Java桌面程序开发完成做产品的时候,面对未知的安装环境,通常是编写一些预安装检测脚本/程序,让程序傻瓜化安装以便减少分发出去的产品带来 的未知工作量(安装答疑,操作系统问题引起安装失败等), ...

  7. Pytorch之训练器设置

    Pytorch之训练器设置 引言 深度学习训练的时候有很多技巧, 但是实际用起来效果如何, 还是得亲自尝试. 这里记录了一些个人尝试不同技巧的代码. tensorboardX 说起tensorflow ...

  8. mac sublime3 无法安装Package Control

    一.在线安装 1.打开sublime,Ctrl+` 打开控制台, 输入 import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedc ...

  9. Dynamics AX 中的图片处理

    1.从本地读取图片文件,并判断格式是否附合要求. FilenameFilter filter = [‘Image Files‘,‘*.bmp;*.jpg;*.gif;*.jpeg‘]; BinData ...

  10. Laravel API Tutorial: How to Build and Test a RESTful API

    With the rise of mobile development and JavaScript frameworks, using a RESTful API is the best optio ...