mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修改 FreeSql.Repository Autofac 注入方式,真正的实现全局过滤功能;
- 增加 FreeSql.Repository DataFilter 属性;
```csharp
repos.DataFilter.Disable("test") 临时禁用,不影响全部;
repos.DataFilter.DisableAll()
repos.DataFilter.Enable("test")
repos.DataFilter.EnableAll()
repos.DataFilter.Apply("name", a => a.Id > 1) 附加新的过滤器
```
			
			
This commit is contained in:
		@@ -78,6 +78,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public List<T> Query<T>(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => Query<T>(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		public List<T> Query<T>(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			var ret = new List<T>();
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return ret;
 | 
			
		||||
			var type = typeof(T);
 | 
			
		||||
			int[] indexes = null;
 | 
			
		||||
			var props = dicQueryTypeGetProperties.GetOrAdd(type, k => type.GetProperties());
 | 
			
		||||
@@ -96,6 +97,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public void ExecuteReader(DbTransaction transaction, Action<DbDataReader> readerHander, string cmdText, object parms = null) => ExecuteReader(transaction, readerHander, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public void ExecuteReader(Action<DbDataReader> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteReader(null, readerHander, cmdType, cmdText, cmdParms);
 | 
			
		||||
		public void ExecuteReader(DbTransaction transaction, Action<DbDataReader> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
@@ -218,6 +220,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public int ExecuteNonQuery(DbTransaction transaction, string cmdText, object parms = null) => ExecuteNonQuery(transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteNonQuery(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		public int ExecuteNonQuery(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return 0;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
@@ -245,6 +248,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public object ExecuteScalar(DbTransaction transaction, string cmdText, object parms = null) => ExecuteScalar(transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteScalar(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		public object ExecuteScalar(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return null;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public Task<List<T>> QueryAsync<T>(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => QueryAsync<T>(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		async public Task<List<T>> QueryAsync<T>(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			var ret = new List<T>();
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return ret;
 | 
			
		||||
			var type = typeof(T);
 | 
			
		||||
			int[] indexes = null;
 | 
			
		||||
			var props = dicQueryTypeGetProperties.GetOrAdd(type, k => type.GetProperties());
 | 
			
		||||
@@ -33,6 +34,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public Task ExecuteReaderAsync(DbTransaction transaction, Func<DbDataReader, Task> readerHander, string cmdText, object parms = null) => ExecuteReaderAsync(transaction, readerHander, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public Task ExecuteReaderAsync(Func<DbDataReader, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteReaderAsync(null, readerHander, cmdType, cmdText, cmdParms);
 | 
			
		||||
		async public Task ExecuteReaderAsync(DbTransaction transaction, Func<DbDataReader, Task> readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
@@ -155,6 +157,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public Task<int> ExecuteNonQueryAsync(DbTransaction transaction, string cmdText, object parms = null) => ExecuteNonQueryAsync(transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public Task<int> ExecuteNonQueryAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteNonQueryAsync(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		async public Task<int> ExecuteNonQueryAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return 0;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
@@ -182,6 +185,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public Task<object> ExecuteScalarAsync(DbTransaction transaction, string cmdText, object parms = null) => ExecuteScalarAsync(transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
 | 
			
		||||
		public Task<object> ExecuteScalarAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) => ExecuteScalarAsync(null, cmdType, cmdText, cmdParms);
 | 
			
		||||
		async public Task<object> ExecuteScalarAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
 | 
			
		||||
			if (string.IsNullOrEmpty(cmdText)) return null;
 | 
			
		||||
			var dt = DateTime.Now;
 | 
			
		||||
			var logtxt = new StringBuilder();
 | 
			
		||||
			var logtxt_dt = DateTime.Now;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
			try { Cache.Remove($"{key1}|{key2}"); } catch { } // redis-cluster 不允许执行 multi keys 命令
 | 
			
		||||
			CacheSupportMultiRemove = Cache.Get(key1) == null && cache.Get(key2) == null;
 | 
			
		||||
			if (CacheSupportMultiRemove == false) {
 | 
			
		||||
				log.LogWarning("FreeSql Warning: 低性能, IDistributedCache 没实现批量删除缓存 Cache.Remove(\"key1|key2\").");
 | 
			
		||||
				//log.LogWarning("FreeSql Warning: 低性能, IDistributedCache 没实现批量删除缓存 Cache.Remove(\"key1|key2\").");
 | 
			
		||||
				Remove(key1, key2);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user