(一)SqlSugar(在.net core中)


 支持復雜得sql查詢:(SimpleClient以面向對象的思維對單個對象進行增,刪,查,改得基礎操作),(SqlSugarClient對復雜得sql查詢,事務操作,如批量操作加事務)

1:在nuget里面下載SqlSugarCore.dll包

2:鏈接類

public class SqlsugarContext
{

//鏈接字符串
string conn = "Data Source=PC-202103271034\\SQLEXPRESS;Initial Catalog=dmscqdb;Persist Security Info=True;User ID=sa;Password=123456;Connect Timeout=500;";

//獲取操作數據庫得鏈接

public SqlSugarClient OpenConnection()
{
SqlSugarClient sqlSugarClient= new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = conn,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.SystemTable
});
sqlSugarClient.Aop.OnExecutingChangeSql = (sql, pars) =>
{
Console.WriteLine(sql);
return new KeyValuePair<string, SugarParameter[]>(sql, pars);
};
return sqlSugarClient;
}

}

3:對單表的基礎操作(做成一個泛型類,方便繼承)

public class SqlSugarDbGet<TEntity> where TEntity : class, new()
{

public SqlsugarContext _sqlsugarContext;
public SqlSugarDbGet(SqlsugarContext sqlsugarContext)
{
_sqlsugarContext = sqlsugarContext;
}
public static SimpleClient<TEntity> Getinstance => new SimpleClient<TEntity>(HttpContext.GetService<SqlsugarContext>().DB);
//批量添加
public bool AddRange(IEnumerable<TEntity> ts)
{
using (SqlSugarClient client = _sqlsugarContext.OpenConnection())
{
try
{
client.BeginTran();
int result = client.Insertable<TEntity>(ts).ExecuteCommand();
client.CommitTran();
return true;
}
catch (Exception e)
{
string msg = e.Message;
client.RollbackTran();
return false;

}
}
}

//批量修改
public bool UpdateRange(IEnumerable<TEntity> ts)
{
using (SqlSugarClient client = _sqlsugarContext.OpenConnection())
{
try
{
client.BeginTran();
int result = client .Updateable<TEntity>(ts).ExecuteCommand();
client.CommitTran();
return true;
}
catch (Exception e)
{
string msg = e.Message;
client.RollbackTran();
return false;

}
}
}
//批量刪除
public bool DeleteRange(IEnumerable<TEntity> ts)
{
using (SqlSugarClient client = _sqlsugarContext.OpenConnection())
{
try
{
client.BeginTran();
int result = client .Deleteable<TEntity>(ts).ExecuteCommand();
client.CommitTran();
return true;
}
catch (Exception e)
{
string msg = e.Message;
client.RollbackTran();
return false;

}
}
}

}

4:對復雜表的查詢

//以對象的方式進行查詢

using (SqlSugarClient client = _sqlsugarContext.OpenConnection())
{
var dss = client.Queryable<T1, T3, T4>((a, b, c) => new JoinQueryInfos(JoinType.Inner, a.id == b.t1id, JoinType.Inner, b.id == c.t3id)).Where(a => a.name == "666").Select((a, b, c) => new vtt()
{
id = a.id,
name1 = c.name4

}).ToList();
}

//以sql的方式進行查詢(呢種要用的多些,方便些)
using (SqlSugarClient client = _sqlsugarContext.OpenConnection())
{
int totalnum = 0;
int totalPage = 0;

sqlsugar在Queryable得時候采用得延遲加載,直接sql賽選和where后面賽選查詢條件差不多,只有轉tolist或者.count()得時候才會往返數據庫真正從數據庫獲取數據

//條件加載where得labdb后面

string sql = "select T3.id,T3.name1 from T1 join T3 on T1.id=T3.t1id";
List<vtt> datas = client.SqlQueryable<vtt>(sql).Where(m => 1 == 1).OrderBy(m => m.name1, SqlSugar.OrderByType.Desc).Select(m => new vtt { t1id = m.t1id }).ToPageList(1, 10, ref totalnum, ref totalPage);

//直接在sql里面加條件查詢

string sql1 = "select T3.id,T3.name1 from T1 join T3 on T1.id=T3.t1id where T3.name1=@name1";

List<vtt> datas1 = client.SqlQueryable<vtt>(sql1).AddParameters(new { name1 = "1122",ss="" }).Where(m => 1 == 1).OrderBy(m => m.name1, SqlSugar.OrderByType.Desc).Select(m => new vtt { t1id = m.t1id }).ToPageList(1, 10, ref totalnum, ref totalPage);

//按name1分組求t1id相加得和,name1 必須包含在分組GroupBy后面,不然不能查詢呢個字段

string sql = "select * from T3";
List<vtt> datas = client.SqlQueryable<vtt>(sql).Select(m => new vtt { t1id = SqlFunc.AggregateSum(m.t1id), name1 = m.name1 }).GroupBy(m=>m.name1).ToPageList(1, 10, ref totalnum, ref totalPage);

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM