- 修复 MySql 枚举表达式 == 解析成数字的 bug;

- 增加 Connection 对象扩展方法,实现像 Dapper 的使用习惯;
This commit is contained in:
28810
2019-04-10 21:19:32 +08:00
parent c3c7539150
commit d1a07dc888
18 changed files with 432 additions and 117 deletions

View File

@ -13,6 +13,12 @@ namespace FreeSql {
/// <param name="transaction"></param>
/// <returns></returns>
IDelete<T1> WithTransaction(DbTransaction transaction);
/// <summary>
/// 指定事务对象
/// </summary>
/// <param name="transaction"></param>
/// <returns></returns>
IDelete<T1> WithConnection(DbConnection connection);
/// <summary>
/// lambda表达式条件仅支持实体基础成员不包含导航对象

View File

@ -13,6 +13,12 @@ namespace FreeSql {
/// <param name="transaction"></param>
/// <returns></returns>
IInsert<T1> WithTransaction(DbTransaction transaction);
/// <summary>
/// 指定事务对象
/// </summary>
/// <param name="transaction"></param>
/// <returns></returns>
IInsert<T1> WithConnection(DbConnection connection);
/// <summary>
/// 追加准备插入的实体

View File

@ -15,6 +15,12 @@ namespace FreeSql {
/// <param name="transaction"></param>
/// <returns></returns>
TSelect WithTransaction(DbTransaction transaction);
/// <summary>
/// 指定连接对象
/// </summary>
/// <param name="connection"></param>
/// <returns></returns>
TSelect WithConnection(DbConnection connection);
/// <summary>
/// 审核或跟踪 ToList 即将返回的数据

View File

@ -13,6 +13,12 @@ namespace FreeSql {
/// <param name="transaction"></param>
/// <returns></returns>
IUpdate<T1> WithTransaction(DbTransaction transaction);
/// <summary>
/// 指定事务对象
/// </summary>
/// <param name="transaction"></param>
/// <returns></returns>
IUpdate<T1> WithConnection(DbConnection connection);
/// <summary>
/// 不使用参数化,可通过 IFreeSql.CodeFirst.IsNotCommandParameter 全局性设置

View File

@ -62,6 +62,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
void ExecuteReader(Action<DbDataReader> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
void ExecuteReader(DbTransaction transaction, Action<DbDataReader> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
void ExecuteReader(DbConnection connection, Action<DbDataReader> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteReader(dr => {}, "select * from user where age > @age", new { age = 25 })
/// </summary>
@ -69,6 +70,7 @@ namespace FreeSql {
/// <param name="parms"></param>
void ExecuteReader(Action<DbDataReader> readerHander, string cmdText, object parms = null);
void ExecuteReader(DbTransaction transaction, Action<DbDataReader> readerHander, string cmdText, object parms = null);
void ExecuteReader(DbConnection connection, Action<DbDataReader> readerHander, string cmdText, object parms = null);
/// <summary>
/// 查询
/// </summary>
@ -76,6 +78,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
object[][] ExecuteArray(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object[][] ExecuteArray(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object[][] ExecuteArray(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteArray("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -84,6 +87,7 @@ namespace FreeSql {
/// <returns></returns>
object[][] ExecuteArray(string cmdText, object parms = null);
object[][] ExecuteArray(DbTransaction transaction, string cmdText, object parms = null);
object[][] ExecuteArray(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 查询
/// </summary>
@ -91,6 +95,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
DataTable ExecuteDataTable(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
DataTable ExecuteDataTable(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
DataTable ExecuteDataTable(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteDataTable("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -99,6 +104,7 @@ namespace FreeSql {
/// <returns></returns>
DataTable ExecuteDataTable(string cmdText, object parms = null);
DataTable ExecuteDataTable(DbTransaction transaction, string cmdText, object parms = null);
DataTable ExecuteDataTable(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 在【主库】执行
/// </summary>
@ -107,6 +113,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
int ExecuteNonQuery(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
int ExecuteNonQuery(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 在【主库】执行ExecuteNonQuery("delete from user where age > @age", new { age = 25 })
/// </summary>
@ -115,6 +122,7 @@ namespace FreeSql {
/// <returns></returns>
int ExecuteNonQuery(string cmdText, object parms = null);
int ExecuteNonQuery(DbTransaction transaction, string cmdText, object parms = null);
int ExecuteNonQuery(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 在【主库】执行
/// </summary>
@ -123,6 +131,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object ExecuteScalar(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
object ExecuteScalar(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 在【主库】执行ExecuteScalar("select 1 from user where age > @age", new { age = 25 })
/// </summary>
@ -131,6 +140,7 @@ namespace FreeSql {
/// <returns></returns>
object ExecuteScalar(string cmdText, object parms = null);
object ExecuteScalar(DbTransaction transaction, string cmdText, object parms = null);
object ExecuteScalar(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
@ -142,6 +152,7 @@ namespace FreeSql {
/// <returns></returns>
List<T> Query<T>(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
List<T> Query<T>(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
List<T> Query<T>(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -151,6 +162,7 @@ namespace FreeSql {
/// <returns></returns>
List<T> Query<T>(string cmdText, object parms = null);
List<T> Query<T>(DbTransaction transaction, string cmdText, object parms = null);
List<T> Query<T>(DbConnection connection, string cmdText, object parms = null);
#region async
/// <summary>
@ -162,6 +174,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
Task ExecuteReaderAsync(Func<DbDataReader, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task ExecuteReaderAsync(DbTransaction transaction, Func<DbDataReader, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task ExecuteReaderAsync(DbConnection connection, Func<DbDataReader, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
/// </summary>
@ -169,6 +182,7 @@ namespace FreeSql {
/// <param name="parms"></param>
Task ExecuteReaderAsync(Func<DbDataReader, Task> readerHander, string cmdText, object parms = null);
Task ExecuteReaderAsync(DbTransaction transaction, Func<DbDataReader, Task> readerHander, string cmdText, object parms = null);
Task ExecuteReaderAsync(DbConnection connection, Func<DbDataReader, Task> readerHander, string cmdText, object parms = null);
/// <summary>
/// 查询
/// </summary>
@ -176,6 +190,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
Task<object[][]> ExecuteArrayAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<object[][]> ExecuteArrayAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<object[][]> ExecuteArrayAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -184,6 +199,7 @@ namespace FreeSql {
/// <returns></returns>
Task<object[][]> ExecuteArrayAsync(string cmdText, object parms = null);
Task<object[][]> ExecuteArrayAsync(DbTransaction transaction, string cmdText, object parms = null);
Task<object[][]> ExecuteArrayAsync(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 查询
/// </summary>
@ -191,6 +207,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
Task<DataTable> ExecuteDataTableAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<DataTable> ExecuteDataTableAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<DataTable> ExecuteDataTableAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 查询ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -199,6 +216,7 @@ namespace FreeSql {
/// <returns></returns>
Task<DataTable> ExecuteDataTableAsync(string cmdText, object parms = null);
Task<DataTable> ExecuteDataTableAsync(DbTransaction transaction, string cmdText, object parms = null);
Task<DataTable> ExecuteDataTableAsync(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 在【主库】执行
/// </summary>
@ -207,6 +225,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
Task<int> ExecuteNonQueryAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<int> ExecuteNonQueryAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<int> ExecuteNonQueryAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 在【主库】执行ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
/// </summary>
@ -215,6 +234,7 @@ namespace FreeSql {
/// <returns></returns>
Task<int> ExecuteNonQueryAsync(string cmdText, object parms = null);
Task<int> ExecuteNonQueryAsync(DbTransaction transaction, string cmdText, object parms = null);
Task<int> ExecuteNonQueryAsync(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 在【主库】执行
/// </summary>
@ -223,6 +243,7 @@ namespace FreeSql {
/// <param name="cmdParms"></param>
Task<object> ExecuteScalarAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<object> ExecuteScalarAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<object> ExecuteScalarAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 在【主库】执行ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
/// </summary>
@ -231,6 +252,7 @@ namespace FreeSql {
/// <returns></returns>
Task<object> ExecuteScalarAsync(string cmdText, object parms = null);
Task<object> ExecuteScalarAsync(DbTransaction transaction, string cmdText, object parms = null);
Task<object> ExecuteScalarAsync(DbConnection connection, string cmdText, object parms = null);
/// <summary>
/// 执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
@ -242,6 +264,7 @@ namespace FreeSql {
/// <returns></returns>
Task<List<T>> QueryAsync<T>(CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<List<T>> QueryAsync<T>(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
Task<List<T>> QueryAsync<T>(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);
/// <summary>
/// 执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new { age = 25 })
/// </summary>
@ -251,6 +274,7 @@ namespace FreeSql {
/// <returns></returns>
Task<List<T>> QueryAsync<T>(string cmdText, object parms = null);
Task<List<T>> QueryAsync<T>(DbTransaction transaction, string cmdText, object parms = null);
Task<List<T>> QueryAsync<T>(DbConnection connection, string cmdText, object parms = null);
#endregion
}
}

View File

@ -0,0 +1,57 @@
//using FreeSql.DatabaseModel;
//using System;
//using System.Collections.Generic;
//using System.Text;
//namespace FreeSql {
// public interface IDbManage {
// /// <summary>
// /// 判断表是否存在
// /// </summary>
// /// <param name="name">表名</param>
// /// <returns></returns>
// bool ExistsTable(string name);
// /// <summary>
// /// 判断列是否存在
// /// </summary>
// /// <param name="table">表名</param>
// /// <param name="column">列名</param>
// /// <returns></returns>
// bool ExistsColumn(string table, string column);
// /// <summary>
// /// 判断视图是否存在
// /// </summary>
// /// <param name="name">视图名</param>
// /// <returns></returns>
// bool ExistsView(string name);
// /// <summary>
// /// 判断列是否存在
// /// </summary>
// /// <param name="view">视图名</param>
// /// <param name="column">列名</param>
// /// <returns></returns>
// bool ExistsColumnByView(string view, string column);
// /// <summary>
// /// 获取表信息,包括表、列详情、主键、唯一键、索引、备注(注意:本方法不返回外键)
// /// </summary>
// /// <param name="name">表名</param>
// /// <returns></returns>
// DbTableInfo GetTableInfo(string name);
// /// <summary>
// /// 获取视图信息,包括表、列详情
// /// </summary>
// /// <param name="name">视图名</param>
// /// <returns></returns>
// DbTableInfo GetViewInfo(string name);
// /// <summary>
// /// 获取指定数据库的表信息,包括表、列详情、主键、唯一键、索引、外键、备注
// /// </summary>
// /// <param name="database"></param>
// /// <returns></returns>
// List<DbTableInfo> GetTablesByDatabase(params string[] database);
// }
//}

View File

@ -11,7 +11,7 @@ namespace FreeSql {
/// <returns></returns>
List<string> GetDatabases();
/// <summary>
/// 获取指定数据库的表信息,包括表、列详情、主键、唯一键、索引、外键
/// 获取指定数据库的表信息,包括表、列详情、主键、唯一键、索引、外键、备注
/// </summary>
/// <param name="database"></param>
/// <returns></returns>