9.15 Sql 操作
温馨提示
推荐使用 《9.15 Sql 高级代理》代替本章节功能。Sql 高级代理 能够提供更容易且更易维护的方式。
9.15.1 关于 Sql
Fur 框架提供非常多且灵活的 sql 操作方法,且性能不输于 dapper,同时逼近 ADO.NET 原生操作。
9.15.2 懒人无敌 Sql 🐮
9.15.2.1 返回 DataTable
9.15.2.2 返回 List<T>
9.15.2.3 返回 DataSet
9.15.2.4 返回 Tuple<T1,...T8>
9.15.2.5 返回 单行单列
9.15.2.6 返回 受影响行数
9.15.3 懒人无敌 存储过程 🐮
9.15.3.1 返回 DataTable
9.15.3.2 返回 List<T>
9.15.3.3 返回 DataSet
9.15.3.4 返回 Tuple<T1,...T8>
9.15.3.5 返回 单行单列
9.15.3.6 返回 受影响行数
9.15.3.7 带 OUTPUT/RETURN 返回
9.15.4 懒人无敌 函数 🐮
9.15.4.1 标量函数
9.15.4.2 表值函数
9.15.5 ISqlRepository 操作
ISqlRepository 仓储是专门处理 Sql 操作的,无需实体方式,所有接口和 懒人无敌 方式一样:
补充说明
不管是那种方式操作 Sql ,方法名参数都是一致的,如:
SqlQuerySqlQueryAsyncSqlQueriesSqlQueriesAsyncSqlNonQuerySqlNonQueryAsyncSqlScalarSqlScalarAsyncSqlProcedureQuerySqlProcedureQueryAsyncSqlProcedureQueriesSqlProcedureQueriesAsyncSqlProcedureScalarSqlProcedureScalarAsyncSqlProcedureNonQuerySqlProcedureNonQueryAsyncSqlProcedureOutputSqlProcedureOutputAsyncSqlFunctionScalarSqlFunctionScalarAsyncSqlFunctionQuerySqlFunctionQuery
9.15.6 IRepository 操作
IRepository 也能操作 sql,调用方法也是和上面一致的,如:
特别说明
由于篇幅有限,不再列举所有例子。
9.15.7 IRepository<TEntity> 操作
IRepository<TEntity> 也能操作 sql,调用方法也是和上面一致的,如:
特别说明
由于篇幅有限,不再列举所有例子。
9.15.8 关于 Sql 参数
所有 sql、存储过程,函数 参数都支持四种方式:
DbParameter[]:数组类型new {}:匿名类型new Class{}:强类型类型(支持复杂存储过程参数)Dictionary<string,object>类型
小知识
建议除了复杂的存储过程(带 OUTPUT/RETURN)的以外,所有参数建议使用 new {} 匿名类型,如果需要动态参数,则可以使用 Dictionary<string,object> 类型。
9.15.9 多数据库 Sql 操作 💯 💛
Fur 框架拥有非常灵活的多数据库操作方式,只需通过多数据库上下文定位器即可动态切换数据库。
9.15.9.1 懒人无敌 🐮 方式
补充说明
懒人方式 只需要通过 Change<TDbContextLocator> 方式即可动态切换数据库。
9.15.9.2 ISqlRepository 方式
只需要通过 ISqlRepository<TDbContextLocator> 注入或通过 sqlRepository.Change<TDbContextLocator>() 切换。
9.15.9.3 IRepository 方式
只需要通过 repository.Change<TDbContextLocator>() 获取即可。
9.15.9.4 IRepository<TEntity> 方式
只需要通过 IRepository<TEntity, TDbContextLocator> 注入或通过 personRepository.Change<TEntity, TDbContextLocator>() 切换。
9.15.10 反馈与建议
与我们交流
给 Fur 提 Issue。