自动生成DTO(Sugar框架)
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框架)的更多相关文章
- net软件自动生成开发编程框架编程机器人
有一个.net自动生成平台(编程机器人)推荐给大家,常规几天十几天的工作,机器人几分钟搞定,不写一行代码,留下大把休闲时光,适应于聪明人:不想太累的程序员(看看风景泡泡妞),不想多请人的老板(有限资金 ...
- 使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆
我这里使用的数据库是mysql5.0 数据是上课用的.这些都不是重点,重要的是学会这个方法: 创建好数据库: create database jboadefault character set utf ...
- 自动生成DTO(EF框架)
[0]安装相关工具包 PostgreSQL版本: Npgsql.EntityFrameworkCore.PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL ...
- 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法
首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
1. web service普及: Webservice soap wsdl区别之个人见解 Web Service实现业务诉求: Web Service是真正“办事”的那个,提供一种办事接口的统称. ...
- 基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版)
TableGo v5.8.8版震撼发布,此次版本更新如下: 1.新增两个扩展字段,用于生成自定义模板时使用. 2.自定义模板新增模板目录,可以选择不同分类目录下的模 ...
- [goa]golang微服务框架学习(二)-- 代码自动生成
之前用过go语言的反射来做一些代码生成,参考这篇. 但是这种方式,入侵太强,需要执行对应的申明调用, 所以对GOA框架的自动生成非常感兴趣,于是仔细研究了一下,发现用的比较巧妙, 这里先卖个关子,先看 ...
- 为测试框架model类自动生成xml结果集
问题:有大量类似于theProductId这样名字的字符串需要转换成the_product_id这种数据库column名的形式. 思路:见到(见)大写字母(缝)就插入(插)一个“_”字符(针)进去,最 ...
- Go 语言,开源服务端代码自动生成 框架 - EasyGoServer
EasyGoServer 作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblog ...
随机推荐
- ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截
2018年12月10日,ThinkPHP v5系列发布安全更新,修复了一处可导致远程代码执行的严重漏洞.阿里云态势感知已捕获多起基于该漏洞的真实攻击,并对该漏洞原理以及漏洞利用方式进行分析.现在,对于 ...
- macOS cataline 10.15 升级后问题一览
1. git无法使用.报错如下 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), m ...
- C++之静态(static)
一.静态数据成员与静态成员函数 二.从内存角度看静态数据成员 三.从this指针谈静态成员函数 四.注意事项 五.补充说明 1.<静态>课程评论: 静态成员是类的成员,不是对象的成员: 静 ...
- Java-Class-@I:org.apache.ibatis.annotations.Mapper
ylbtech-Java-Class-@I:org.apache.ibatis.annotations.Mapper 1.返回顶部 2.返回顶部 1. package com.ylbtech.ed ...
- ionic-CSS:ionic 网格(Grid)
ylbtech-ionic-CSS:ionic 网格(Grid) 1.返回顶部 1. ionic 网格(Grid) ionic 的网格(Grid)和其他大部分框架有所不同,它采用了弹性盒子模型(Fle ...
- ionic:temple
ylbtech-ionic:temple 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://ylb ...
- 基于Netty的RPC架构学习笔记(三):netty客户端
文章目录 举个
- 剑指offer——34之字打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题解: 与上道题没区别,就是在存入数据时 ...
- java执行spark查询hbase的jar包出现错误提示:ob aborted due to stage failure: Master removed our application: FAILED
执行java调用scala 打包后的jar时候出现异常 /14 23:57:08 WARN TaskSchedulerImpl: Initial job has not accepted any re ...
- shell 一些命令(转)
shell 一些命令(转) https://www.cnblogs.com/amei0/p/8041989.html 参考文档 http://man.linuxde.net/ 一.awk 求和 awk ...