自动生成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 ...
随机推荐
- 判断访问浏览器客户端类型(pc,mac,ipad,iphone,android)
<script type="text/javascript"> //平台.设备和操作系统 var system = { win: false, mac: false, ...
- Struts2配置详情
Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现 ...
- ionic:安装
ylbtech-ionic:安装 1.返回顶部 1. ionic 安装 本站实例采用了ionic v1.3.2 版本,使用的 CDN 库地址: <link href="https:// ...
- Spark 调优之ShuffleManager、Shuffle
Shuffle 概述 影响Spark性能的大BOSS就是shuffle,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作. 因此,如果要让作业的性能更上一层楼,就有必要对 shuffle 过 ...
- Codeforces 1166B - All the Vowels Please
题目链接:http://codeforces.com/problemset/problem/1166/B 个元音. 思路:先判断能否弄出至少5*5的行列,然后按顺序填字符串就好了. AC代码: #in ...
- Redhat 7.0 安装桌面环境
1.安装桌面环境组件 #yum groupinstall "Server with GUI" 2.切换到图形界面 #startx 3.设置启动模式为图形界面 #rm /etc/sy ...
- 《Java语言程序设计》编程练习6.18(检测密码)
6.18 (检测密码)一些网站对于密码具有一些规则.编写一个方法,检测字符串是否是一个有效密码. 假定密码规则如下: • 密码必须至少8位字符. • 密码仅能包含字母和数字. ...
- 《转》python 12 列表解析
转自 http://www.cnblogs.com/BeginMan/p/3164937.html 一.列表解析 列表解析来自函数式编程语言(haskell),语法如下: [expr for iter ...
- 2018ICPC焦作 D-Keiichi Tsuchiya the Drift King /// 几何
题目大意: https://nanti.jisuanke.com/t/34142 有一个弯道抽象成圆的一部分 车子抽象成矩形 漂移过程中矩形上边会与圆的圆心在同一条直线上 以右上点贴着弯道边缘进行漂移 ...
- Milking Cows /// 区间计数 离散化排序 oj10105
题目大意: 输入n 接下来描述1~n位农夫挤牛奶的开始与结束时间 Sample Input 3300 1000700 12001500 2100 Sample Output 900 300 注意 ...