织梦搭建网站,市场调研报告范文,专门做音箱的网站,网页设计与制作教程课后题答案介绍
dapper是一款轻量级的ORM Dapper 被称为 ORM 之王。
以下是 Dapper 的主要功能#xff1a; 速度快#xff0c;性能快。 更少的代码行。 对象映射器。 静态对象绑定。 动态对象绑定。 轻松处理 SQL 查询。 易于处理存储过程。 直接对 IDBConnection 类进行操作#xf…介绍
dapper是一款轻量级的ORM Dapper 被称为 ORM 之王。
以下是 Dapper 的主要功能 速度快性能快。 更少的代码行。 对象映射器。 静态对象绑定。 动态对象绑定。 轻松处理 SQL 查询。 易于处理存储过程。 直接对 IDBConnection 类进行操作该类提供平滑性并直接对数据库运行查询而不是像我们在 EF 和 Web Page is Unavailable 中那样使用各种对像传递数据。 多查询支持。 支持存储过程。 批量数据插入功能。 Dapper 还允许基于多个输入获取多个数据。
为什么选择Dapper Dapper 是第二快的 ORM 创建项目 1 新建 Dapper.DB 类库
1接口 public interface ISqlDapper { /// summary /// /// /summary /// typeparam nameT/typeparam /// param nameentities/param /// param nameupdateFileds指定插入的字段/param /// param namebeginTransaction是否开启事务/param /// returns/returns int AddT(T entity, ExpressionFuncT, object updateFileds null, bool beginTransaction false); } 引用using Dapper;
2通用方法 public class SqlDapper : ISqlDapper { private string _connectionString; private int? commandTimeout null; private DbCurrentType _dbCurrentType; public SqlDapper() { _connectionString DBServerProvider.GetConnectionString(); } public SqlDapper(string connKeyName, DbCurrentType dbCurrentType) { _dbCurrentType dbCurrentType; _connectionString DBServerProvider.GetConnectionString(connKeyName); } public SqlDapper(string connKeyName) { _connectionString DBServerProvider.GetConnectionString(connKeyName); } private bool _transaction { get; set; } private IDbConnection _transactionConnection null; IDbTransaction dbTransaction null; private T ExecuteT(FuncIDbConnection, IDbTransaction, T func, bool beginTransaction false) { if (_transaction || dbTransaction ! null) { return func(_transactionConnection, dbTransaction); } if (beginTransaction) { return ExecuteTransaction(func); } using (var connection DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType)) { return func(connection, dbTransaction); } } private T ExecuteTransactionT(FuncIDbConnection, IDbTransaction, T func) { using (_transactionConnection DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType)) { try { _transactionConnection.Open(); dbTransaction _transactionConnection.BeginTransaction(); T reslutT func(_transactionConnection, dbTransaction); dbTransaction.Commit(); return reslutT; } catch (Exception ex) { dbTransaction?.Rollback(); throw ex; } finally { dbTransaction?.Dispose(); } } } /// summary /// /// /summary /// typeparam nameT/typeparam /// param nameentity/param /// param nameaddFileds指定插入的字段/param /// param namebeginTransaction是否开启事务/param /// returns/returns public int AddT(T entity, ExpressionFuncT, object addFileds null, bool beginTransaction false) { return AddRangeT(new T[] { entity }, addFileds, beginTransaction); } /// summary /// /// /summary /// typeparam nameT/typeparam /// param nameentities/param /// param nameaddFileds指定插入的字段/param /// param namebeginTransaction是否开启事务/param /// returns/returns public int AddRangeT(IEnumerableT entities, ExpressionFuncT, object addFileds null, bool beginTransaction true) { Type entityType typeof(T); var key entityType.GetKeyProperty(); if (key null) { throw new Exception(实体必须包括主键才能批量更新); } string[] columns; //指定插入的字段 if (addFileds ! null) { columns addFileds.GetExpressionToArray(); } else { var properties entityType.GetGenericProperties(); if (key.PropertyType ! typeof(Guid)) { properties properties.Where(x x.Name ! key.Name).ToArray(); } columns properties.Select(x x.Name).ToArray(); } //mysql批量写入待优化 string sql $insert into {entityType.GetEntityTableName()}({string.Join(,, columns)}) $values({string.Join(,, columns)});; return Executeint((conn, dbTransaction) { //todo pgsql待实现 return conn.Execute(sql, (DBType.Name DbCurrentType.MySql.ToString() || DBType.Name DbCurrentType.PgSql.ToString()) ? entities.ToList() : null, dbTransaction); }, beginTransaction); } /// summary /// 开启事务 /// /summary /// returns/returns public ISqlDapper BeginTrans() { _transaction true; _transactionConnection DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType); _transactionConnection.Open(); dbTransaction _transactionConnection.BeginTransaction(); return this; } /// summary /// 提交 /// /summary public void Commit() { try { _transaction false; dbTransaction.Commit(); } catch (Exception ex) { throw ex; } finally { _transactionConnection?.Dispose(); dbTransaction?.Dispose(); } } /// summary /// 回滚 /// /summary public void Rollback() { try { _transaction false; dbTransaction?.Rollback(); } catch (Exception ex) { throw ex; } finally { _transactionConnection?.Dispose(); dbTransaction?.Dispose(); } } } } 3AppSetting 设置Connection 连接 public static class AppSetting { public static IConfiguration Configuration { get; private set; } private static Connection _connection; public static string DbConnectionString { get { return _connection.DbConnectionString; } } public static void Init(IServiceCollection services, IConfiguration configuration) { Configuration configuration; services.ConfigureConnection(configuration.GetSection(Connection)); var provider services.BuildServiceProvider(); _connection provider.GetRequiredServiceIOptionsConnection().Value; DBType.Name _connection.DBType; } } public class Connection { public string DBType { get; set; } public string DbConnectionString { get; set; } }