出售域名 11365.com.cn
有需要请联系 16826375@qq.com
在手机上浏览
在手机上浏览

SinGooCMS.Ado使用说明

发布日期:2020-07-15

SinGooCMS.Ado 支持netstandard2.1和net framework 4.5.2(从2.3版本开始是net framework 4.6.1),原生sql语句操作,支持SqlServer、MySql、Sqlite三种数据库。经过测试发现搭配SqlServer效率最高,MySql次之,而Sqlite建议在单机、小型应用或者没什么并发的情况下使用。

1、引用 SinGooCMS.Ado

using SinGooCMS.Ado;
using SinGooCMS.Ado.Interface;

 

2、配置 appsetting.json

"ConnectionStrings": {
  "ProviderName": "Sqlite",
  //"SQLConnSTR": "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123;Application Name=SinGooCMS;pooling=true;min pool size=5;max pool size=512;connect timeout = 20;",
  //"SQLConnSTR": "server=localhost;database=SinGooCMSv16;uid=root;pwd=123456;SslMode=None;",
  "SQLConnSTR": "Data Source=db/singootop.db",
  //"DistributedCacheConnStr": "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123;Application Name=SinGooCMS;pooling=true;min pool size=5;max pool size=512;connect timeout = 20;",
  "RedisExchangeHosts": "127.0.0.1:6379,allowadmin=true"
}

ProviderName 支持三种数据库:SqlServer、MySql、Sqlite
SQLConnSTR 数据库连接字符串

 

3、使用

//说明:带Async的方法是异步方法
//使用默认的字符串
IDbAccess dbSqlServerAccess => DbProvider.DbAccess;
//也可以使用指定的连接字符串
IDbAccess dbSqlServerAccess => DbProvider.Create("SqlServer", "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123");
//使用MySql
IDbAccess dbMySqlAccess => DbProvider.Create("MySql", "server=localhost;database=singoocmsv16;uid=root;pwd=123456;SslMode=None;");
//使用Sqlite
IDbAccess dbSqliteAccess => DbProvider.Create("Sqlite", @"Data Source=F:\jsonlee\db\singootop.db");

//CRUD
//查询
var val=dbSqlServerAccess.GetValue<string>("select UserName from DbMaintenanceTest");
var val=dbSqlServerAccess.GetValueAsync<string>("select UserName from DbMaintenanceTest");

var model=dbSqlServerAccess.GetModel<DbMaintenanceTestInfo>(10);
var model=dbSqlServerAccess.GetModelAsync<DbMaintenanceTestInfo>(10);

var pagerData=dbSqlServerAccess.GetPagerList<DbMaintenanceTestInfo>("", "AutoID desc", 2, 10, ref totalCount, ref totalPage);
var pagerData=dbSqlServerAccess.GetPagerListAsync<DbMaintenanceTestInfo>("", "AutoID desc", 2, 10, ref totalCount, ref totalPage);

//增加
dbSqlServerAccess.InsertModel(new DbMaintenanceTestInfo() { UserName = "jsonlee" });
dbSqlServerAccess.InsertModelAsync(new DbMaintenanceTestInfo() { UserName = "jsonlee" });

//修改
dbSqlServerAccess.UpdateModel(new DbMaintenanceTestInfo() { AutoID=10,UserName="刘备" });
dbSqlServerAccess.UpdateModelAsync(new DbMaintenanceTestInfo() { AutoID=10,UserName="刘备" });

//删除
dbSqlServerAccess.DeleteModel(new DbMaintenanceTestInfo() { AutoID=15 });
dbSqlServerAccess.DeleteModelAsync(new DbMaintenanceTestInfo() { AutoID=15 });


关于实体类特性

[Table("DbMaintenanceTest")]
public class DbMaintenanceTestInfo
{
    [Key]
    public int AutoID { get; set; }
    public string UserName { get; set; }
}
Table("数据库表名") 表示实体类映射的数据库的表名
Key 表示当前列是主键列,一般主键列都是自增列
NotMapped 表示不需要映射到数据库字段,一般是自定义的属性


关于性能分析

从2.3版本开始,添加了MiniProfiler性能分析工具,在对系统优化时可以根据性能报告找出需要优化的地方。

//使用方法,第一个参数是指定数据库类型,第二个参数是自定义的连接字符串,第三个参数是标示“是否开启分析”
IDbAccess dbSqlServerAccess => DbProvider.Create("SqlServer", "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123", true);

如此在程序运行时,会记录下程序运行性能,并把文件保存到如:/bin/Debug/netcoreapp3.1/singoocms.ado.profiler-2020-08-27.txt,内容如下

JSONLEE at 2020-08-27 00:40:34
SinGooCMS-Ado-GetObject 738.8ms (sql = 442.8ms in 2 cmds)
JSONLEE at 2020-08-27 00:40:34
SinGooCMS-Ado-GetObject 47.6ms (sql = 38ms in 2 cmds)

注意:在正式生产环境中,请不要使用性能分析,因为写日志需要IO操作,会影响运行效率!


 

开源地址:https://github.com/SinGooCMS/SinGooCMSAdo

在VS nuget管理器 中搜索 SinGooCMS.Ado