代码拉取完成,页面将自动刷新
同步操作将从 Stoneson/CNative.Dapper.Utils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
CNative.Dapper.DbUtils is the ORM in .NetCore, .NetFramework. It supports Mysql, SqlServer, Oracle,SqlLite,Npgsql,MsAccess
基于 Dapper 构建的微型 ORM 类库,提供一个包含增、删、改、查,分页等常用方法的数据访问层基类,支持用 Lambda 表达式书写查询和更新条件,且实体类有T4模版自动生成.省去手写实体类的麻烦。
软件架构说明
MyGet Pre-release feed: https://www.nuget.org/packages/CNative.Dapper.Utils/
Package | NuGet Stable | NuGet Pre-release | Downloads | MyGet |
---|---|---|---|---|
CNative.Dapper.Utils.Utils |
appsettings.json
{
"AppSettings": {
"Title": "Test",
"Version": "1.2.1",
"AccessToken": "xxxxxx@abc.com"
},
"connectionStrings": [
{
"name": "BaseDb",
"CommandTimeout": 45,//秒
"connectionString": "Data Source=.;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=xxxxxx",
"providerName": "System.Data.SqlClient"
},
{
"name": "Oracle",
"connectionString": "Data Source=xxxxxx;Persist Security Info=True;User ID=hispro;Password=xxxxxx",
"providerName": "System.Data.OracleClient"
},
{
"name": "MySql",
"connectionString": "server=xxxxxx;uid=root;pwd=xxxxxx;database=test",
"providerName": "System.Data.MySql"
},
{
"name": "Sqlite",
"connectionString": "DataSource=xxxxxx.db;Version=3;Pooling=False;Max Pool Size=100;",
"providerName": "System.Data.Sqlite"
},
{
"name": "PostgreSql",
"connectionString": "User id=postgres;Password=xxxxxx;Host=xxxxxx;Port=55433;Database=test;Pooling=true;",
"providerName": "System.Data.Npgsql"
}{
"name": "MsAccess",
"connectionString": "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\Documents\DevExpress 2010.1 Demos\Components\ASPxEditors\CS\ASPxEditorsDemos\App_Data\nwind.mdb;Persist Security Info=False ",
"providerName": "System.Data.Access"
},
{
"name": "MsAccess2",
"IsUseMasterSlaveSeparation": true,//是否启用主从分离模式
"SlaveConnectStrings": [ "MsAccess", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\Documents\DevExpress 2010.1 Demos\Components\ASPxEditors\CS\ASPxEditorsDemos\App_Data\nwind.mdb;Persist Security Info=False " ],//从数据库连接字符串集合,
"connectionString": "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\Documents\DevExpress 2010.1 Demos\Components\ASPxEditors\CS\ASPxEditorsDemos\App_Data\nwind.mdb;Persist Security Info=False",
"providerName": "CNative.Dapper.Utils.MsAccessProvider"
},{
"name": "OracleOleDbM2",
"connectionString": "Provider=MSDAORA;User Id=xxx;Password=xxxx;Persist Security Info=True;Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxxxxx)(PORT = 1521)))(CONNECT_DATA = (SID = orcl)))",
"providerName": "System.Data.OracleOleDb"
},
{
"name": "sql2000",
"connectionString": "Data Source=xxxxxxxx;Initial Catalog=ave2;User ID=sa;Password=xxxxxxx",
"providerName": "System.Data.SqlClient2000"
}
]
}
//测试用例
//脚本跟踪功能
SqlMapperTrace.SetMapperTrace((trec)=>
{
Console.WriteLine(trec);
}, (trec) =>
{
Console.WriteLine(trec);
});
[TestClass]
public class UnitTest461DbUtils
{
private ISqlBuilder DRY2 = null;
private ISqlBuilder sqlBuilder = null;
//在运行每个测试之前,使用 TestInitialize 来运行代码
[TestInitialize()]
public void MyTestInitialize()
{
DRY2 = new SqlBuilder("BaseDb");
sqlBuilder = new SqlBuilder("BaseDb");
}
[TestMethod]
//单表操作测试
[TestMethod]
public void TestSelectSqlBuilder1()
{
var lst = sqlBuilder.doSelect<Entity_persons>()//查询集合+排序+TOP
.Fields(s ⇒ new { s.id, s.name, s.adress })//添加查询多个字段
.Top(8)
// .Where(w ⇒ w.id.Between(10, 20))
.OrderByDescending(d ⇒ d.createTime)//按列倒向排序
.Query(); //返回结果
var lst3 = sqlBuilder.doSelect<Entity_persons>()//取单行+排序
.Fields(s ⇒ new { s.id, s.name, s.adress })//添加查询多个字段
.Where(w ⇒ w.id.Between(11, 20))
.OrderBy(d ⇒ d.id) //按列排序
.QuerySingle(); //返回结果
var lst4 = sqlBuilder.doSelect<Entity_persons>().Count(w ⇒ w.id.Between(11, 20)); //返回结果
}
[TestMethod]
public void TestInsertSqlBuilder1()
{
var jg = new Entity_DMJGXXB() { OrgId = 1002, jgdm = "56783", jgmc = "方舱" };
var ret = sqlBuilder.doDelete<Entity_DMJGXXB>()//实体删除
.Delete(jg)
.Exec;
ret = sqlBuilder.doInsert<Entity_DMJGXXB>()//插入实体
.Insert(jg)
.Execute();
ret = sqlBuilder.doDelete<Entity_DMJGXXB>()//表达式删除
.Where(s ⇒ s.OrgId == 1003)
.Execute();
ret = sqlBuilder.doInsert<Entity_DMJGXXB>()//表达式插入
.Insert(new Entity_DMJGXXB()
{
OrgId = 1003,
jgdm = "532236783",
jgmc = "方舱3",
CreateId = 0,
UpdateId = 0,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
})
.Exec;
//表复制
var ret1 = sqlBuilder.doDelete<Entity_DMCZYJGDYB2>()
.Where(s ⇒ s.ksid == 1100453)
.Execute();
var ret22 = sqlBuilder.doInsert<Entity_DMCZYJGDYB2>()//表复制
.InsertSelect<Entity_DMCZYJGDYB>(s ⇒ new Entity_DMCZYJGDYB2()
{
OrgId = s.OrgId,
czyid = s.czyid,
czyjgdyid = s.czyjgdyid,
czyxm = s.czyxm,
jgmc = "fasdfafdsaf",
ksid = s.ksid,
ksmc = s.ksmc
}, s ⇒ s.ksid == 1100453)
.Exec;
}
[TestMethod]
public void TestUpdateSqlBuilder1()
{
var ret = sqlBuilder.doUpdate<Entity_DMJGXXB>()
.Set(s ⇒ new Entity_DMJGXXB()
{
jgdm = "5322336783",
jgmc = "fff232aaa",
CreateId = 0,
UpdateId = 0,
jgjpm = "ffff",
UpdateTime = DateTime.Now
})
.Where(s ⇒ s.OrgId == jg.OrgId)
.Exec;
jg.jgjpm = "345454";
ret = sqlBuilder.DoUpdate
.Update(jg, "jgjpm");
var ret1 = sqlBuilder.doDelete<Entity_DMJGXXB>()
.Where(s ⇒ s.OrgId == 1005)
.Execute();
//批量导入数据
ret = sqlBuilder.doInsert<Entity_DMJGXXB>()
.BulkCopyData(new List<Entity_DMJGXXB>(){new Entity_DMJGXXB()
{
OrgId = 1004,
jgdm = "532236784",
jgmc = "方舱4",
CreateId = 0,
UpdateId = 0,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
},new Entity_DMJGXXB()
{
OrgId = 1005,
jgdm = "532236785",
jgmc = "方舱5",
CreateId = 0,
UpdateId = 0,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
},new Entity_DMJGXXB()
{
OrgId = 1006,
jgdm = "532236786",
jgmc = "方舱6",
CreateId = 0,
UpdateId = 0,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
} });
//更新或插入
var ret23 = sqlBuilder.DoUpdate
.UpdateOrInsert(jg, w ⇒ w.OrgId == jg.OrgId);
ret = sqlBuilder.doUpdate<Entity_DMJGXXB>()
.UpdateOrInsert(s ⇒ new Entity_DMJGXXB()
{
OrgId = 1006,
jgdm = "5322336783",
jgmc = "方舱232",
CreateId = 0,
UpdateId = 0,
jgjpm = "wsafdasfd",
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
}, w ⇒ w.OrgId == 1006);
}
//多表操作测试
[TestMethod]
public void TestSelectFieldExprSqlBuilder1()
{
//查寻时加集合函数
var ret1 = sqlBuilder.doSelect<Entity_DMCZYJGDYB2>()
.Fields(f ⇒ new { czyjgdyid = f.czyjgdyid.SQL_MAX() })
.Where(s ⇒ s.ksid == 1100453)
.GetSingle<object>();
//查寻返回单行实体
var ret2 = sqlBuilder.doSelect<Entity_DMJGXXB>()
.Where(s => s.OrgId == 1008)
.QuerySingle();
var ret2 = sqlBuilder.doSelect<Entity_DMCZYJGDYB2>()
.Fields(f ⇒ new
{ f.czyid, f.czyxm, jgmc = f.jgmc.SQL_UCASE(), ksmc = f.jgmc.SQL_SUBSTR(2, 3) })
//.Where(s ⇒ s.ksid == 1100453)
.Where(s ⇒ s.ksid == 1100453 && s.jgmc.SQL_UCASE() == "FASDFAFDSAF")
.Query();
var ret3 = sqlBuilder.doSelect<Entity_DMCZYJGDYB2>()
.Fields(f ⇒ new { f.ksid, f.ksmc, czyjgdyid = f.czyjgdyid.SQL_MAX() })
.Where(s ⇒ s.OrgId == 1001)
.GroupBy(g ⇒ new { g.ksid, g.ksmc })
.OrderBy(g ⇒ g.ksid)
.Query();
var ret4 = sqlBuilder.doSelect<Entity_DMCZYJGDYB2>()
.Fields(f ⇒ new { f.ksid, f.ksmc, czyjgdyid = f.czyjgdyid.SQL_COUNT(), czyid = f.czyjgdyid.SQL_MAX() })
.Where(s ⇒ s.OrgId == 1001)
.GroupBy(g ⇒ new { g.ksid, g.ksmc })
.Having(h ⇒ h.czyjgdyid.SQL_COUNT() > 3 && h.czyjgdyid.SQL_MAX() > 0)
.OrderBy(g ⇒ g.ksid)
.Query();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。