一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具

一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具

Intro

DbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本是基于 dotnet framework WinForm 实现的,在 1.1.0 版本更新中使用 dotnet core 3.1 基于 WPF 重写了,并实现了一个简单的基于插件模式开发模式并引入了多语言的基础支持。

数据库当前支持 SqlServer 和 MySql,可以自己扩展其他类型数据库。

可以利用这个小工具生成数据库表对应的 Model,并且会判断数据表列是否可以为空,可以为空的情况下会使用可空的数据类型,如 int? , DateTime? ,如果数据库中有列描述信息,也会生成在属性名称上添加列描述的注释,支持导出多个表;可以导出到Excel,可以根据Excel字段文档生成Sql,数据库表误删除又没有备份的时候就很有帮助了,而且支持反向的根据生成的Model去生成创建数据库表的Sql(供参考)。

基本功能

功能一览

功能说明

  1. DbFirst

    Model 设置选项说明:

  • model的命名空间:生成的 model 所在的命名空间,默认为 Models,不可为空,为空则使用默认值Models

  • model前缀:表名的基础上加的前缀,默认为空

  • model后缀:表名的基础上加的后缀,默认为空

  • 生成私有字段,默认为 false,如果为 false则使用自动属性的代码风格,反之,使用传统 get;set; 风格代码,如:

  • 生成 Description Attribute,默认值为 true,如果为 true则会在属性字段上生成一个 [Description]的Attribute,如果为false则不生成,效果如下:csharp/// <summary>用户名</summary>[Description("用户名")]publicstringUserName{get;set;}

  • 生成 Model 名称的规则说明:生成的Model的名称由前缀和表名称及后缀拼接而成,如果表名以 tabtab_tbltbl_这些开头,则会先把这些移除掉再拼接,可以通过自定义插件扩展

  1. 设置数据库连接字符串,并连接数据库

  2. 选择要导出到 Excel 的数据库表

  3. 导出到 Excel

  4. 导出数据库表到Excel

  • ModelFirst

    1. 可以手动填写信息或者先选择 Excel 导入数据库表信息

    2. 生成创建数据库表的 Sql 语句,不会自动在数据库里创建表,根据生成的 Sql 语句再创建表

  • CodeFirst

    1. 根据已有的 Model 生成创建表的 sql ,字段注释会从属性的 Description Attribute 中获取

    2. 根据需要设置是否生成数据库描述 sql

    3. 左侧生成表字段信息,右侧生成创建表的sql,生成的 Sql 仅供参考,请自行根据需要调整数据类型以及字段长度

  • Settings

    1. 修改默认数据库连接字符串

    2. 修改默认数据库类型

    3. 修改默认语言(1.1.0 版本需要重启应用)

    插件扩展

    Packages

    目前的 packages:

    • DbTool.Core DbTool 用于扩展的接口定义,帮助类

    • DbTool.DbProvider.MySql DbTool 对于 MySql 的支持

    • DbTool.DbProvider.SqlServer DbTool 对于 SqlServer 的支持

    扩展方式

    1. 扩展数据库支持,实现 IDbProvider

    2. 扩展导出方式,实现 IDbDocExporter,当前支持导出 Excel

    3. 扩展 Model 代码生成方式,实现 IModelCodeGenerator,根据数据库表信息生成 Model

    4. 扩展 Model 名称表名称转化,实现 IModelNameConverter,也可以继承 DefaultModelNameConverter,改写某一个实现

    自定义扩展使用方式

    新建一个类库项目,引用 DbTool.Core,并实现相应的接口,实现对应的逻辑,将生成的 dll 放在 DbToolplugins 目录下即可

    举个例子,自定义一个 Markdown Exporter 插件

    1. 新建一个项目 DbTool.DbDocExporter.Markdown,并引用 DbTool.Core

    2. 添加 MarkdownDbDocExporter 类并实现 IDbDocExporter 接口

    3. dotnet build 生成 dll,并将生成的 dll 放在 plugins 目录下

    Reference

    • https://github.com/WeihanLi/DbTool

    • https://github.com/WeihanLi/DbTool/tree/packages

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python os模块详细_python之os模块详解

importos#os.getcwd() 获取当前工作目录&#xff0c;即当前python脚本工作的目录路径#print(os.getcwd()) # G:\python二期\一月\day18 #os.curdir 返回当前目录: (.) current#os.pardir 获取当前目录的父目录字符串名&#xff1a;(..)#print(os.listdir(rG:\python二期\一月\d…

高级数据结构---并查集

高级数据结构—并查集 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int father[N]; int find(int x) {//寻找共同祖先if (x ! father[x]) {father[x] find(father[x]);}return father[x];//找到了…

m个苹果放入n个盘子问题

题目&#xff1a; 把M个同样的苹果放在N个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;&#xff08;用K表示&#xff09;5&#xff0c;1&#xff0c;1和1&#xff0c;5&#xff0c;1 是同一种分法。 输入 每个用例包含二个整…

用python处理excel的基本语法_《使用python3读取处理excel表的数据内容如何对内容求平均值》 用python读取excel文件...

使用python3读取处理excel表的数据内容如何对内容求平均值 先说下概述&#xff1a; 平就合平均数的值。 (a1 a2 ……an)/na1&#xff0c;a2&#xff0c;……&#xff0c;an的平均值。 简单算均数。么一组数字10、20、30、40、50 那么它们的算术平均值是&#xff08;10 20 30 40…

k8s - 如何变更CNI网络插件IP池?

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

word List23

word List23 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

整数的分法

将整数N分成K个整数的和且每个数大于等于A 小于等于B 求有多少种分法&#xff1f; 代码如下&#xff1a; #include <iostream> using namespace std;int fff(int a, int k, int mins, int maxs) {if (a < mins)//结束条件有两个&#xff0c;1.数值小于最小值 2.只分…

一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务

今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客&#xff0c;文中带来了一个实验性的产品gRPC-Web。大家可以点击文末的讨论帖进行相关反馈。我会在文章末尾给出原文链接。全部译文如下&#xff1a;我很高兴宣布通过.NET对gRPC-Web进行实验性…

python文件图标变成小电脑_手把手教你给Python程序写图形界面,并且打包成exe文件-exe文件...

环境配置 官网下载Python3&#xff0c;LZ的配置环境是Python3.6&#xff0c;PyCharm 2017.2.1pip3 install PyQt5 #下载PyQt5 pip install PyQt5-tools -i http://pypi.douban.com/simple --trusted-hostpypi.douban.com #下载工具designer.exe&#xff0c;来开发图形界面 在Py…

数据结构(哈夫曼树+KMP)之 数据加密+解密

数据结构&#xff08;哈夫曼树KMP&#xff09;之 数据加密解密 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define INF 2^31-1 int next[N]; int Sum 0;//权重总和 typedef struct fNode {//哈夫…

数的划分

问题描述   将整数n分成k份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。   例如&#xff1a;n7&#xff0c;k3&#xff0c;下面三种分法被认为是相同的。   1&#xff0c;1&#xff0c;5; 1&#xff0c;5&#xff0c;1; 5&#xff0c;1&#x…

扩展性思维

扩展性思维&#xff0c;简单来说就是举一反三、触类旁通&#xff1b;它的核心目标是提升我们思维的广度&#xff0c;也就是让我们的知识树变得更加开阔&#xff1b;具备了这样的知识树后才能发现要解决的同类型事情一起解决。下面以几个举一反三的例子讲一下扩展性思维&#xf…

C语言 ---文件读取

C语言 —文件读取 参考学习链接&#xff1a; https://blog.csdn.net/qq_38149046/article/details/80359743 http://c.biancheng.net/view/2068.html 代码&#xff1a; #include<stdio.h> #include<stdlib.h> int main() {FILE *fp;char ch;//如果文件不存在&am…

个人永久性免费-Excel催化剂功能第119波-一大波虚构数据,支持多国语言版本

日常的数据分析过程中或者制作教程过程中&#xff0c;难免要生成一些示例数据、虚构数据&#xff0c;Excel除了几个基础的随机数值函数外&#xff0c;没有什么额外的支持&#xff0c;本篇再次补全这个缺陷。虚构函数的由来本次的功能&#xff0c;使用老外做的轮子&#xff0c;有…

python可变参数和关键字参数位置_python中函数的默认参数和可变长参数如何排列?...

参数在python中总是通过赋值进行传递的。在默认情况下&#xff0c;参数是通过其位置进行匹配的&#xff0c;从左到右&#xff0c;而且必须精确的传递和函数头部参数名一样多的参数。 这种默认的传递方式很简单 def f(a,b,c): print(a,b,c) f(1,2,3) 1 2 3 python中可以使用基于…

word List 24

word List 24 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

[USACO1.5]八皇后 Checker Challenge

给定一个 NN 的棋盘&#xff0c;请你在上面放置 N 个棋子&#xff0c;要求满足&#xff1a; 每行每列都恰好有一个棋子 每条对角线上都最多只能有一个棋子 上图给出了当 N6 时的一种解决方案&#xff0c;该方案可用序列 2 4 6 1 3 5 来描述&#xff0c;该序列按顺序给出了从…

python窗口显示表格_pyqt 调用tablewidget窗口时无法显示窗口内容

请教一下大家&#xff0c;想实现在主窗口中点击按钮调用一个新窗口&#xff0c;这个窗口是tablewidget&#xff0c;目前可以实现弹出窗口&#xff0c;但是无法显示表格&#xff0c;只有一个空白窗口。实在找不到原因了&#xff0c;还请大家指点。 这是主窗口代码 # -*- coding:…

程序员过关斩将--redis做消息队列,香吗?

菜菜哥&#xff0c;我刚做完了一个订单系统&#xff0c;感觉很简单呀说说看&#xff0c;大量的订单状态怎么处理的&#xff1f;我设计的时候可是考虑了这一点&#xff0c;所以用了异步处理&#xff0c;采用了MQ那用的什么MQ呢&#xff0c;透露一下呗我用的redis做的MQ&#xff…

word List25

word List25 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;