前言:

项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类。放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码。所以利用了工作之余的时间,将这些散落在多个项目中精致优雅的工具类,归纳起来形成工程,方便后续工作的使用和便捷开发。

根据实际需求,编写了此工具。目前只支持SQLServer数据库,不过我自己有时间也会完成其他数据库支持的,有兴趣的读者可以继续扩展支持其他数据库。

功能:

1、能自动获得用户数据库中的所有数据表;
2、能根据用户所选的数据表,自动生成实体类;
3、能自动产生 C# 实体类的(*.cs)代码文件;

实体工具:

一、界面截图:

二、SQL语句部分代码

----1. 获取所有的数据库名-----
SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME -----2. 获取所有的表名------
SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U' ORDER BY NAME
--XTYPE='U':表示所有用户表;
--XTYPE='S':表示所有系统表;
SELECT NAME FROM SYSOBJECTS WHERE TYPE = 'U' AND SYSSTAT = ''
----注意:一般情况只需要TYPE = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了。

三、C#部分代码

        /// <summary>
/// 获取所有数据库
/// </summary>
/// <param name="connection"></param>
/// <returns></returns>
public static List<DbTable> GetAllDataBaseName(string connection)
{
List<DbTable> dic = new List<DbTable>();
string ConnString = "select name from Master.sys.SysDatabases order by name";
SqlConnection connect = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(ConnString, connect);
try
{
if (connect.State == ConnectionState.Closed)
{
connect.Open();
IDataReader dr = cmd.ExecuteReader();
dic.Clear();
while (dr.Read())
{
dic.Add(new DbTable { value = dr["name"].ToString(), key = dr["name"].ToString() });
}
dr.Close(); }
}
catch (Exception ex)
{
throw new AggregateException("获得数据库地址错误,你想上天吗?");
}
finally
{
if (connect != null && connect.State == ConnectionState.Open)
{
connect.Dispose();
}
}
return dic;
}
        /// <summary>
/// 写文件
/// </summary>
/// <param name="fileName">文件完整路径</param>
/// <param name="content">内容</param>
private static void WriteAndSave(string fileName, string content)
{
//实例化一个文件流--->与写入文件相关联
using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
//实例化一个StreamWriter-->与fs相关联
using (var sw = new StreamWriter(fs))
{
//开始写入
sw.Write(content);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}
}
}

工具下载:

实体类生成工具[下载]

总结

1.避免编写重复代码,编写此工具生成实体类快速开发。

2.这类工具在网上已有不少,但是自己可以归纳起来形成工程,放入项目中,不仅自己从中可以学到新的知识也同时提升了自己的总结归纳能力。

3.此工具还未完善,只支持SQLServer数据库,不过我自己有时间也会完成其他数据库支持的,有兴趣的读者可以继续扩展支持其他数据库。

4.如果有不对的或不理解的地方,希望大家可以多多指正,提出问题,才能站在更多用户角度,编写了出更便捷实用的工具。

【干货分享】C# 实体类生成工具的更多相关文章

  1. c# 实体类生成工具

    一个简单生成c#实体类的工具 源代码下载

  2. C#实体类生成工具(onlymodel)

    最近刚从常用数据库Mysql转到SqlServer,深陷于没有实体生成工具的痛苦,尝试过动软,但生成的字段类型和数据库的有些不对应.以及网上的一些实体生成工具,但要么操作太过繁琐,要么效果不如人意,所 ...

  3. 用node.js给C#写一个数据表的实体类生成工具

    虽然微软提供了T4模板,但是我感觉非常难用.哪儿比得上直接用脚本来写模板来的爽. 因为要给一个老项目做周边的工具,需要连接到数据库. 我习惯性用EntityFrameworkCore来做,因为毕竟从出 ...

  4. ORM存储过程和实体类代码生成工具

    ORM存储过程和实体类生成工具 自己写的一个ORM框架的存储过程和实体类生成工具,具体界面如下: 操作步骤: 1.设置数据库连接: 2.选择要生成的表或视图: 3.选择要生成的存储过程类型: 4.如果 ...

  5. C# T4 模板 数据库实体类生成模板(带注释,娱乐用)

     说明:..,有些工具生成实体类没注释,不能和SqlServer的MS_Description属性一起使用,然后照着网上的资源,随便写了个生成模板,自娱自乐向,其实卵用都没有参考教程    1.htt ...

  6. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  7. [开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码

    前言 FreeSql 发布至今已经有9个月,功能渐渐完善,自身的生态也逐步形成,早在几个月前写过一篇文章<ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE>,您可以 ...

  8. EF:根据实体类生成表结构SQL

    根据实体类生成表结构SQL: PM> Enable-Migrations -ProjectName Domain -StartUpProjectName Handler -Force PM> ...

  9. C#实体类生成XML与XML Schema文档

    一.实体类生成XML private void CreateXML() { Type[] objType = DBEntityRegst(); foreach (var item in objType ...

随机推荐

  1. 019--python内置函数

    一.内置高阶函数 map函数:接收两个数据 函数和序列,map()将函数调用'映射'到序列身上,并返回一个含有所有返回值的一个列表 num1 = [1,2,3,4,5] num2 = [5,4,3,2 ...

  2. Android Service完全解析,关于服务你所需知道的一切(上) (转载)

    转自:http://blog.csdn.net/guolin_blog/article/details/11952435 转载请注明出处:http://blog.csdn.net/guolin_blo ...

  3. JS中的回调函数实例浅析

    本文实例讲述了JS中的回调函数.分享给大家供大家参考,具体如下: 在说回调函数之前,不妨先看一段代码,相信有点js基础的同学都能明白他的含义: ? 1 2 3 document.getElementB ...

  4. hihoCoder搜索二·骑士问题

    #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> ...

  5. 关于js变量作用域

    先来看一段代码 var ss=1;function sss(){ alert(ss);}$(document).ready(function(){ var ss=2; alert(ss); sss() ...

  6. PJzhang:centos7上LNMP方式安装dvwa漏洞测试环境

    猫宁!!! 参考链接:https://www.jianshu.com/p/5491ce5bfbac https://www.cnblogs.com/wujuntian/p/8183952.html h ...

  7. poj2893 M*N puzzle 【n*m数码问题小结】By cellur925

    题目传送门 这个问题是来源于lydrainbowcat老师书上讲排序的一个扩展.当时讲的是奇数码问题,其实这种问题有两种问法:一种局面能否到另一种局面.到达目标局面的最小步数. 本文部分内容引用于ly ...

  8. ubuntu 给文件夹创建桌面快捷方式, 其实就是创建个软链接

    ln -s /home/zdj/Documents/windows_backup/2019Spring/ ~/Desktop/2019Spring ln -s /home/zdj/Documents/ ...

  9. Secrets CodeForces - 333A

    Secrets CodeForces - 333A 题意:这个世界上只有这样面值的硬币:1,3,9,27,81,...有一个商人,某一天遇到了一个顾客,他购买了价值n的商品,发现用自己的硬币无法付给商 ...

  10. hibernate Day1 案例代码

    1.创建Person类 package com.icss.pojo; public class Person { private int uid; private String uname; priv ...