(一)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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!