• 开始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,如果这里能用个模板的,就更加灵活了,工具只用来填空实体名称,属性名称,类型就好了,这里大家有什么建议,可以留言给我。

      期待您的建议!

      想要更快更方便的了解相关知识,可以关注微信公众号 
     

     

  • 相关阅读:
    基于zookeeper实现分布式锁(续)
    Jquery消息提示插件toastr使用详解
    【微服务架构】SpringCloud组件和概念介绍(一)
    elasticsearch(全文检索)的介绍和安装
    springboot+elasticsearch实现全局检索
    自动化框架学习各个模块,以及遇到的问题
    python重写方法
    自动化时,写时候的疑问
    自动化selenium,执行js,以及触屏操作,和类的解释
    写了个python脚本,循环执行某一个目录下的jmeter脚本————解决的问题,每次回归时,都得一个个拉取
  • 原文地址:https://www.cnblogs.com/axzxs2001/p/15862444.html
Copyright © 2020-2023  润新知