step1:启动api项目  

step2:使用postman工具,填上接口地址http://localhost:7788/api/automapper/AutoMapperSuper

step3:表格数量过大,只是需要映射少部分表时,可以手动生成单表DTO,参数:{"tableName":"sys_option"}

// AutoMapperController.cs

namespace xxxxxxxxx
{
[Route("api/[controller]/")]
public class AutoMapperController : BaseController
{
IAutoMapperRepo _autoMapperManager;
public AutoMapperController(IAutoMapperRepo autoMapperManager)
{
_autoMapperManager = autoMapperManager;
} [HttpPost("AutoMapperSuper")]
public ApiResponse AutoMapperSuper(AutoMapperHotelReq req)
{
return _autoMapperManager.AutoMapperSuper(req);
}
}
}
// AutoMapperSuper.cs

namespace DLHIS.X8.Repository
{
public class AutoMapperRepo : BaseRepo, IAutoMapperRepo
{
List<string> listDescription = new List<string>(); public ApiResponse AutoMapperSuper(AutoMapperHotelReq req)
{
try
{
IDbRes superres = HotelPool.GetSuperDbRes();
if (superres.Code != )
{
return Failed(superres.Message);
}
using (superres.conn)
{
if (req.TableName != "")
{
var listtb = superres.conn.DbMaintenance.GetTableInfoList();
string[] s = req.TableName.Split(new char[] { '_' });
var count = s.Length;
string ModelName = "";
string s1 = "";
string s2 = "";
for (var i = ; i < s.Length; i++)
{
s1 = (s[i].Substring(, )).ToUpper();
s2 = (s[i].Substring());
if (s2 == null)
{
s2 = "";
}
ModelName = ModelName + s1 + s2;
}
ModelName = ModelName + "Model";
superres.conn.MappingTables.Add(ModelName, req.TableName);
var coltb = superres.conn.DbMaintenance.GetColumnInfosByTableName(req.TableName);
foreach (DbColumnInfo c in coltb)
{
string[] s4 = c.DbColumnName.Split(new char[] { '_' });
var count4 = s4.Length;
string colname = "";
string s41 = "";
string s42 = "";
for (var j = ; j < s4.Length; j++)
{
if (s4[j].Length <= )
{
s41 = s4[j].ToUpper();
s42 = "";
}
else
{
s41 = (s4[j].Substring(, )).ToUpper();
s42 = (s4[j].Substring());
}
if (s42 == null)
{
s42 = "";
}
colname = colname + s41 + s42;
}
superres.conn.MappingColumns.Add(colname, c.DbColumnName, ModelName);
}
superres.conn.DbFirst.IsCreateAttribute().Where(req.TableName).CreateClassFile("D:\\AutoMapper\\DTO", "DLHIS.X8.Entities.DTO");
}
else
{
var listtb = superres.conn.DbMaintenance.GetTableInfoList();
foreach (DbTableInfo t in listtb)
{
string[] s = t.Name.Split(new char[] { '_' });
var count = s.Length;
string ModelName = "";
string s1 = "";
string s2 = "";
for (var i = ; i < s.Length; i++)
{
s1 = (s[i].Substring(, )).ToUpper();
s2 = (s[i].Substring());
if (s2 == null)
{
s2 = "";
}
ModelName = ModelName + s1 + s2;
}
ModelName = ModelName + "Model";
superres.conn.MappingTables.Add(ModelName, t.Name);
var coltb = superres.conn.DbMaintenance.GetColumnInfosByTableName(t.Name);
foreach (DbColumnInfo c in coltb)
{
string[] s4 = c.DbColumnName.Split(new char[] { '_' });
var count4 = s4.Length;
string colname = "";
string s41 = "";
string s42 = "";
for (var j = ; j < s4.Length; j++)
{
if (s4[j].Length <= )
{
s41 = s4[j].ToUpper();
s42 = "";
}
else
{
s41 = (s4[j].Substring(, )).ToUpper();
s42 = (s4[j].Substring());
}
if (s42 == null)
{
s42 = "";
}
colname = colname + s41 + s42;
}
superres.conn.MappingColumns.Add(colname, c.DbColumnName, ModelName);
}
superres.conn.DbFirst.IsCreateAttribute().Where(t.Name).CreateClassFile("D:\\AutoMapper\\DTO", "DLHIS.X8.Entities.DTO");
}
}
return Success();
}
}
catch (Exception e)
{
return Failed("自动生成数据库实体类时发生异常,错误描述:" + e.Message);
}
}
}
}
// IAutoMapperRepo.cs

namespace xxxxxxxxxxxxxxx
{
public interface IAutoMapperRepo
{
ApiResponse AutoMapperSuper(AutoMapperHotelReq req);
}
}

附:链接数据库操作

public static IDbRes GetSuperDbRes()
{
string ConStr = "";
IDbRes res = new IDbRes();
try
{
/*
MyDbContext dbconn = Global.LoveHotelDbContext;
if (dbconn == null)
{
Global.LoveHotelDbContext = new MyDbContext();
dbconn = new MyDbContext();
}
var item = dbconn.HotelDbConns.FirstOrDefault(x => x.HotelId == "SuperDb");
if (item != null)
{
res.Code = 200;
res.Message = "获取数据库连接池成功!";
res.conn = item.DbConn;
item.RefreshTime = DateTime.Now;
return res;
}
else
{
*/
string jsonfile = "appsettings.json";
using (System.IO.StreamReader file = System.IO.File.OpenText(jsonfile))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject o = (JObject)JToken.ReadFrom(reader);
ConStr = Convert.ToString(o["ConnectionString"]);
}
}
SqlSugarClient db = new SqlSugarClient(
new ConnectionConfig()
{
ConnectionString = ConStr,
DbType = DbType.SqlServer,//设置数据库类型
IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放
InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息
});
/*
HotelDbConn tmp = new HotelDbConn();
tmp.HotelId = "SuperDb";
tmp.DbConn = db;
tmp.RefreshTime = DateTime.Now;
dbconn.HotelDbConns.Add(tmp);
*/
res.Code = ;
res.conn = db;
return res;
//}
}
catch (Exception e)
{
res.Code = ;
res.Message = "连接数据库时发生异常" + e.Message + "###:" + ConStr;
return res;
}
}

自动生成DTO(Sugar框架)的更多相关文章

  1. net软件自动生成开发编程框架编程机器人

    有一个.net自动生成平台(编程机器人)推荐给大家,常规几天十几天的工作,机器人几分钟搞定,不写一行代码,留下大把休闲时光,适应于聪明人:不想太累的程序员(看看风景泡泡妞),不想多请人的老板(有限资金 ...

  2. 使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆

    我这里使用的数据库是mysql5.0 数据是上课用的.这些都不是重点,重要的是学会这个方法: 创建好数据库: create database jboadefault character set utf ...

  3. 自动生成DTO(EF框架)

    [0]安装相关工具包 PostgreSQL版本: Npgsql.EntityFrameworkCore.PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL ...

  4. 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法

    首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...

  5. php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类

    1. web service普及: Webservice soap wsdl区别之个人见解 Web Service实现业务诉求:  Web Service是真正“办事”的那个,提供一种办事接口的统称. ...

  6. 基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版)

    TableGo v5.8.8版震撼发布,此次版本更新如下:          1.新增两个扩展字段,用于生成自定义模板时使用.          2.自定义模板新增模板目录,可以选择不同分类目录下的模 ...

  7. [goa]golang微服务框架学习(二)-- 代码自动生成

    之前用过go语言的反射来做一些代码生成,参考这篇. 但是这种方式,入侵太强,需要执行对应的申明调用, 所以对GOA框架的自动生成非常感兴趣,于是仔细研究了一下,发现用的比较巧妙, 这里先卖个关子,先看 ...

  8. 为测试框架model类自动生成xml结果集

    问题:有大量类似于theProductId这样名字的字符串需要转换成the_product_id这种数据库column名的形式. 思路:见到(见)大写字母(缝)就插入(插)一个“_”字符(针)进去,最 ...

  9. Go 语言,开源服务端代码自动生成 框架 - EasyGoServer

    EasyGoServer 作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblog ...

随机推荐

  1. [原创] delphi KeyUp、KeyPress、Keydown区别和用法,如何不按键盘调用事件

    KeyPress (Sender: TObject; var Key: Char);   当用户按下键盘上的字符键(字母,数字) 会触发该事件,功能键则不会(F1-F12,Ctrl,Alt,Shift ...

  2. thinkphp 模板文件

    因为模板文件中可能会泄露数据表的字段信息,有两种方法可以保护你的模板文件不被访问到: 第一种方式是配置.htaccess文件,针对Apache服务器而言. 大理石平台厂家 把以下代码保存在模块的模板目 ...

  3. NX二次开发-UFUN设置透明度UF_OBJ_set_translucency

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize( ...

  4. Centos7.5安装kafka集群

    Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...

  5. 阿里云ecs(phpstudy一件包)

            选择语言       保存并连接    Linux硬盘挂载是比较常见的管理操作之一.默认情况下数据盘没有挂载,需要手动挂载到系统中.     具体操作是分三步:     硬盘挂载1)需 ...

  6. React:JS中的this和箭头函数

    JS中的this和纯面向对象(java,c++)中的this有点不大一样,其原因就是作用域不同,导致JS中的this的指向不明确,在java中的this指当前对象的this或当前类的this,在JS中 ...

  7. Auto.js淘宝领喵币

    最近,淘宝的新玩法,一直在充斥我的眼球,尤其是喵币的,盖楼... .... 于是就进去看了看,发现逛逛店铺,给好多喵币,但是要进20个,每个要15秒,好麻烦,于是就上网搜了一下,有没有脚本 因为之前搞 ...

  8. Docker学习のDocker中部署静态页网站

    前言:部署一个静态页网站,我们需要 常见映射80端口的交互式容器 安装Nginx(或其他服务器) 安装文本编辑器vim 创建静态页面 修改Ngnix的配置文件 运行Ngnix 验证网站的防高温 一.设 ...

  9. 数据库MySQL--修改数据表

    创建数据库::create database 数据库名: 如果数据不存在则创建,存在不创建:Create database if not exists 数据库名 ; 删除数据库::drop datab ...

  10. vue v-show指令

    demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...