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. thinkphp session支持

    系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置.获取.删除和管理操作. session初始化设置 如果session ...

  2. thinkphp 目录安全文件

    为了避免某些服务器开启了目录浏览权限后可以直接在浏览器输入URL地址查看目录,系统默认开启了目录安全文件机制,会在自动生成目录的时候生成空白的index.html文件,当然安全文件的名称可以设置,例如 ...

  3. 字符串hash+找模数——cf985F

    19260817比自然溢出都要好使 /* 把原串变成用26个01串表示,第i个串对应的字符是i 然后进行字符串hash,s和t双射的条件是26个串的hash值排序后一一相等 */ #include&l ...

  4. js设置当前窗口为最上层窗口

    实际使用iframe框架时会遇到当前窗口页面不能位于最上层窗口的情况,或者是防止自己的网站被别人放在他们的iframe中,这时就需要设置: <script language="java ...

  5. Delphi GDI对象之脱屏位图(Offscreen Bitmaps)

    脱屏位图(Offscreen Bitmaps) 脱屏位图,也叫内存位图,普遍用于Windows程序设计中.它在内存中制作图像,然后利用Draw方法在屏幕上显示出来.当用户想更快的在屏幕上绘制图像时,脱 ...

  6. NX二次开发-UFUN将工程图中的点坐标映射到建模绝对坐标UF_VIEW_map_drawing_to_model

    #include <uf.h> #include <uf_ui.h> #include <uf_draw.h> #include <uf_view.h> ...

  7. js函数中的apply()、call()、bind()方法

    ECMAScript中的函数是对象,因此函数也有属性和方法.每个函数都包含两个属性:length和prototype,且每个函数包含两个非继承而来的方法apply()和call().这两个方法的用途都 ...

  8. Keystone controller.py & routers.py代码解析

    目录 目录 Keystone WSGI 实现 controllerspy routerspy 参考文档 Keystone WSGI 实现 Keystone 项目把每个功能都分到单独的目录下,EXAMP ...

  9. 什么是哈希Hash(散列函数)

    Hash(散列函数) Hash,一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就 ...

  10. Mysql优化-概述

    摘抄并用于自查笔记 为什么要优化 一个应用吞吐量瓶颈往往出现在数据库的处理速度上. 随着应用程序的使用,数据库数据逐渐增多,数据库处理压力逐渐增大. 关系型数据库的数据是存放在磁盘上,读写速度慢(与内 ...