开始CSRebot

写代码很久了了,时不时想把这些年学到的,用到的,或自己感悟到的,汇总一下,形成一个东西,或资料,或工具。但每当开始时就一片空白,总是觉得这些大家都会,这些只是自己片面的观点,这些拿不出手……

转念又想,再不写就更老了,再说社区的力量是伟大的,在写的过程中,可以集大家之思想,来完善,优化。

所以,在这里,如果大家对CSRebot有什么想法,都可以留言,建议也好,指正也好,观点也好,我会认真思考,认真对待,把CSRebot变成一个贴心的代码的小助手。


什么是CSRebot?

答:我想的一个名字,意思就是在我们写csharp时能辅助我们的小工具。


市面上有很多各种各样的工具,肯定会有重复,也可能不如别人做的好,还是那句话,再不写就更老了,更重要的是,在写的路上本身就是一件很幸福的事,没有最好,但求更好。

理想是伟大的,现实是骨感的,从哪里开始?

就从.net tool开始吧,这是一个助手切入点;

开发是一个复杂的过程,CSRebot能从什么方面帮助呢?

就从手边开始吧,先把表转成实体类。


想了一下,把数据库结构转成实体需要两个步骤和一前提:

两个步骤:

1、查询出数据结构

2、转换实体

一个前提:

具备数据类型和语法类型的映射关系

下面是我的想(代)法(码):

数据库的结构信息用如下实体类承载

    public class DataBase{public string DataBaseName { get; set; }public List<Table> Tables{ get; set; } = new List<Table>();}public class Table{public string TableName { get; set; }public string TableDescribe { get; set; }public List<Field> Fields { get; set; } = new List<Field>();}public class Field{public string FieldName{ get; set; }public string FieldDescribe { get; set; }public string DBType { get; set; }}

两个步骤用两个接口完成

/// <summary>
/// 完成从数据库生成数据库结构实体
/// </summary>
public interface ITraverser
{DataBase Traverse();
}
/// <summary>
/// 完成对应编程语言实体类生成
/// </summary>    
public interface IBuilder
{void Build(DataBase database, CommandOptions options);
}

一个条件(初步整理)

_typeMap = new Dictionary<string, string>
{{"char","char" },{"varchar","string" },{"tinytext","string" },{"text","string" },{"blob","string" },{"mediumtext","string" },{"mediumblob","string" },{"longblob","string" },{"longtext","string" },{"tinyint","short" },{"smallint","short" },{"mediumint","short" },{"int","int" },{"bigint","long" },{"float","float" },{"double","double" },{"decimal","decimal" },{"date","DateTime" },{"datetime","DateTime" },{"timestamp","string" },{"time","DateTime" },               {"boolean","bool" },            
};

有了思路,接下来是两个工作:

1、是根据工具的命令和参数选项来执行命令

收集思路:工具的关键字是csrebot,那数据转实体的关命令用什么好?

我初步想的是用gen,generate头三个字母,简单,如果你有好的建议请留言。

2、二是实现数据库结构转实体

收集思路:这里要实现上面的两个接口:ITraverser,Builder。

我的初步想法是,生成的实体类时,项目不同,要求不一,比如实体类上要求带特定的attribute,如果这里能用个模板的,就更加灵活了,工具只用来填空实体名称,属性名称,类型就好了,这里大家有什么建议,可以留言给我。

期待您的建议!

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

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

相关文章

toast弹窗_Android 开发(一):Toast弹窗与获取控件的值

前言&#xff1a;本人也是刚接触Android开发&#xff0c;自己也在摸索中&#xff0c;在实现功能的过程中走了不少弯路&#xff0c;其中很重要的原因之一就是查询不到想要的内容&#xff0c;所以想把自己的经验分享出来。首先是Toast的应用&#xff0c;直接上关键代码。Toast to…

魔性十足的数学动态图,这种东西都拿出来分享?

小编最近发现了一组超美的与数学有关的动态图&#xff0c;而且看久了简直就有魔性&#xff0c;实在是按耐不住激动的心情&#xff0c;秉持着好图齐分享的原则&#xff0c;在这里和大家一起分享一波~>>>>来源&#xff1a;蒋迅的博客

Command模式

作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. UML结构图: 解析: Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver 类中,由调用…

Dapr微服务应用开发系列4:状态管理构件块

Dapr微服务应用开发系列0&#xff1a;概述Dapr微服务应用开发系列1&#xff1a;环境配置Dapr微服务应用开发系列2&#xff1a;Hello World与SDK初接触Dapr微服务应用开发系列3&#xff1a;服务调用构件块题记&#xff1a;这篇介绍状态管理构件块&#xff0c;这个概念相对于微服…

开线程插数据_python笔记7-多线程之线程同步(锁lock)

前言丨关于吃火锅的场景&#xff0c;小伙伴并不陌生&#xff0c;前面几章笔记里面我都有提到&#xff0c;今天我们吃火锅的场景&#xff1a;吃火锅的时候a同学往锅里下鱼丸&#xff0c;b同学同时去吃掉鱼丸&#xff0c;有可能会导致吃到生的鱼丸。为了避免这种情况&#xff0c;…

一文读懂欧拉函数

欧拉函数φ(N)表示小于或等于N的正整数中与N互质的数的个数。又称φ函数、欧拉商数。下面介绍欧拉函数的几个性质&#xff1a;我们根据这几个性质就可以求出欧拉函数。基本思路是首先置φ(N)N&#xff0c;然后再枚举素数p&#xff0c;将p的整数倍的欧拉函数φ(kp)进行如下操作。…

windows 7在工作组模式下管理 Hyper-V

之前在工作组模式下win7来管理server core 下的hyper-v一直不成功&#xff0c;server core下的相应的防火墙端口也已开放但hyper管理器就是无法和hyper-v主机通讯在2008R2下没有问题&#xff0c;现把解决的过程记录下来&#xff0c;以备后查。1、下载Windows 7 远程服务器管理工…

打工就是 “演戏”,你可以认真,但别太当真

这是头哥侃码的第235篇原创时间飞逝&#xff0c;2021年的春节假期已经结束了。在我的记忆中&#xff0c;以前每逢春节的时候&#xff0c;身边的亲戚和朋友们都会非常忙碌&#xff0c;什么聚个餐&#xff0c;串个门呀&#xff0c;什么拜个年&#xff0c;打个牌啦……但从去年开始…

2018年的第一个工作日,推荐几个优质公众号

2017刚过去不久&#xff0c;我们迎来了2018。工作、生活节奏超快的今天&#xff0c;想要不断提升自我&#xff0c;碎片化阅读学习是你最佳的选择&#xff0c;如果你有一颗学习的心&#xff0c;那这些学习型的公众号&#xff0c;绝对会让你受益匪浅。小编为你精选了技术领域几个…

redis session java获取attribute_redis里的数据结构

Redis作为当前使用非常广泛的内存数据库&#xff0c;在代码层面做了很多极致的优化&#xff0c;已获取更好的性能。其中重要的一部分&#xff0c;就是对于底层数据结构的使用。Redis会根据数据量、数据大小等来优化对于不同结构的使用&#xff0c;从而获得更佳的运行效率和内存…

.NET 云原生架构师训练营(模块二 基础巩固 安全)--学习笔记

2.8 安全认证 VS 授权ASP .NET Core 认证授权中间件认证JWT 认证授权认证 VS 授权认证是一个识别用户是谁的过程授权是一个决定用户可以干什么的过程401 Unauthorized 未授权403 Forbidden 禁止访问ASP .NET Core 认证授权中间件在接收到请求之后&#xff0c;认证&#xff08;A…

java超长字符序列化_String 字符串最长可以有多长?

Java技术栈www.javastack.cn打开网站看更多文章String 类可以说是在 Java 中使用最频繁的类了&#xff0c;就算是刚刚接触 Java 的初学者也不会陌生&#xff0c;因为对于 Java 程序来说&#xff0c;main 方法就是使用一个 String 类型数组来作为参数的(String[] args)。对于这样…

一文读懂 AVL 树

背景AVL 树是一棵平衡的二叉查找树&#xff0c;于 1962 年&#xff0c;G. M. Adelson-Velsky 和 E. M. Landis 在他们的论文《An algorithm for the organization of information》中发表。所谓的平衡之意&#xff0c;就是树中任意一个结点下左右两个子树的高度差不超过 1。&am…

欧几里得范数_从范数到正则化

范数是一个在数学领域中常用的工具&#xff0c;同时也是学习机器学习原理中经常碰到的概念。本文将从范数的定义出发&#xff0c;逐步带你理解其在机器学习中的应用。首先需要明确的是&#xff0c;范数是一个函数&#xff0c;在机器学习中我们通常用它来衡量向量的大小。 范数定…

IdentityServer4之持久化很顺手的事

前言原计划打算在春节期间多分享几篇技术文章的&#xff0c;但到最后一篇也没出&#xff0c;偷懒了吗&#xff1f;算是吧&#xff0c;过程是这样的&#xff1a;每次拿出电脑&#xff0c;在孩姥姥家的院子总有阳光沐浴&#xff0c;看不清屏幕&#xff0c;回屋又有点冷(在强行找理…

手写体识别代码_Python识别图片中的文字

一、前言不知道大家有没有遇到过这样的问题&#xff0c;就是在某个软件或者某个网页里面有一篇文章&#xff0c;你非常喜欢&#xff0c;但是不能复制。或者像百度文档一样&#xff0c;只能复制一部分&#xff0c;这个时候我们就会选择截图保存。但是当我们想用到里面的文字时&a…

递推与储存,是动态规划的关键

小智最近由于项目需要&#xff0c;经常要接触到一些规划类的问题。那今天就给大家讲一讲旅行商问题及其解法吧。旅行商问题&#xff0c;即TSP问题&#xff08;Travelling Salesman Problem&#xff09;。问题是&#xff0c;有一个旅行商人要拜访n个城市&#xff0c;每个城市只能…

dotnet core TargetFramework 解析顺序探索

dotnet core TargetFramework 解析顺序测试Intro现在 dotnet 的 TargetFramework 越来越多&#xff0c;抛开 .NET Framework 不谈&#xff0c;如果一个类库支持多个 TargetFramework 应用实际运行的时候会使用哪个版本的 API 呢&#xff0c;之前一直都是想当然的自以为是了&…

大数据时代,掌握数据分析需要做到这几点

这些年来&#xff0c;随着进入大数据时代&#xff0c;各行各业均有一个词频频被提到&#xff0c;那就是数据分析。那么数据分析究竟是什么呢&#xff1f;数据分析就是指用适当的统计分析方法对收集来的大量数据进行处理分析&#xff0c;提取有用信息并形成结论&#xff0c;从而…

93.7%的程序员!竟然都不知道Redis为什么默认16个数据库?

背景在实际项目中redis常被应用于做缓存&#xff0c;分布式锁/消息队列等。但是在搭建配置好redis服务器后很多朋友应该会发现和有这样的疑问&#xff0c;为什么redis默认建立了16个数据库&#xff0c;16个数据库的由来redis是一个字典结构的存储服务器&#xff0c;一个redis实…