(一)Dapper(在.net core中)

dapper的优势是查询纯sql,效率最接近ado.net,又避免了ado.net查询后将table一列一列的转换成实体(每个table然后取row[0][0])呢种转换比较麻烦,dapper是可以直接转成列表或者对象的

1:nuget下载Dapper.dll

2:添加数据库链接类

public class DapperContext
{

 string conn = "Data Source=PC-202103271034\\SQLEXPRESS;Initial Catalog=Efcore;User Id=sa;Password=123456;";

//链接方法

public SqlConnection OpenConnection()
{
SqlConnection connection = new SqlConnection(conn);
return connection;
}

}

3:创建底层基础方法类

public class T1Service
{
public DapperContext _context;
public T1Service(DapperContext context)
{
_context = context;
}

//根据id获取单条数据

public T1 GetEntity(int id)
{
using (IDbConnection conn = _context.OpenConnection())
{
var parameters = new DynamicParameters();//SqlParameter[] sqlParameters = new SqlParameter[] { new SqlParameter("id", id) };//这种会报错
parameters.Add("id", id, System.Data.DbType.Int32);
return conn.Query<T1>("select * from T1 where id=@id", parameters).AsList()[0];
}
}

//获取所有数据

public List<T1> GetAllList()
{
using (IDbConnection conn = _context.OpenConnection())
{

var parameters = new DynamicParameters();
return conn.Query<T1>("select * from test").AsList();

}
}

//批量获取

public List<T1> GetEntities(string no)
{
using (IDbConnection conn = _context.OpenConnection())
{
var parameters = new DynamicParameters();
parameters.Add("no", no, System.Data.DbType.String);
return conn.Query<T1>("select * from T1 where no=@no", parameters).AsList();
}
}

//插入单条数据

public int Add(T1 t)
{
using (IDbConnection conn = _context.OpenConnection())
{
return conn.Execute("insert into T1(name,no,no1,no2,fs,fs1)values(@name,@no,@no1,@no2,@fs,@fs1)", t);
}
}

//批量插入数据

public bool AddRange(IEnumerable<T1> t)
{
using (IDbConnection conn = _context.OpenConnection())
{
conn.Open();
using (IDbTransaction transaction = conn.BeginTransaction())
{
try
{
int result = conn.Execute("insert into T1(name,no,no1,no2,fs,fs1)values(@name,@no,@no1,@no2,@fs,@fs1)", t, transaction);
transaction.Commit();
conn.Close();
return true;
}
catch (Exception e)
{
transaction.Rollback();
string result = e.Message;
conn.Close();
return false;
}
}
}
}

//删除单条数据

public int Delete(int id)
{
using (IDbConnection conn = _context.OpenConnection())
{
var parameters = new DynamicParameters();
parameters.Add("id", id, System.Data.DbType.Int32);
int result = conn.Execute("delete from T1 where id=@id", parameters);
return result;
}
}

//批量删除数据

public bool DeleteRange(List<T1> t)
{
using (IDbConnection conn = _context.OpenConnection())
{
conn.Open();
using (IDbTransaction transaction = conn.BeginTransaction())
{
try
{
int result = conn.Execute("delete from T1 where id=@id", t, transaction);
transaction.Commit();
conn.Close();
return true;
}
catch (Exception e)
{
transaction.Rollback();
string result = e.Message;
conn.Close();
return false;
}
}
}

}

//修改单条数据

public int Update(T1 t)
{
using (IDbConnection conn = _context.OpenConnection())
{
return conn.Execute("update T1 set name=@name,no=@no,no1=@no1,no2=@no2,fs=@fs,fs1=@fs1 where id=@id", t);
}
}

//批量修改数据(和ts集合里面的id相等的数据都会被改掉)

public bool UpdateRange(IEnumerable<T1> ts)
{
using (IDbConnection conn = _context.OpenConnection())
{
conn.Open();

using (IDbTransaction transaction = conn.BeginTransaction())
{
try
{
int result = conn.Execute("update T1 set name=@name,no=@no,no1=@no1,no2=@no2,fs=@fs,fs1=@fs1 where id=@id", ts, transaction);
transaction.Commit();
conn.Close();
return true;
}
catch (Exception e)
{
transaction.Rollback();
string msg = e.Message;
conn.Close();
return false;
}
}
}
}

}

4:业务存可以用下面方法进行并发测试(相当于50个请求同时执行)可以测试性能速度

public IActionResult Index()
{
string ff = "11";
var taskList = new List<Task>();
for (int i = 0; i < 10; i++)
{
taskList.Add(Task.Run(() =>
{
List<T1> t1s = _t1Service.GetAllList();
}
));
}
string ss = "";
Task.WaitAll(taskList.ToArray());

string finise = "";

return View();
}

posted @   yingxianqi  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示