diff --git a/FreeSql.DbContext/DbContext/DbContext.cs b/FreeSql.DbContext/DbContext/DbContext.cs
index cac45b44..0666a4c3 100644
--- a/FreeSql.DbContext/DbContext/DbContext.cs
+++ b/FreeSql.DbContext/DbContext/DbContext.cs
@@ -43,6 +43,8 @@ namespace FreeSql
if (FreeSqlDbContextExtensions._dicSetDbContextOptions.TryGetValue(OrmOriginal.Ado.Identifier, out var opt))
{
_optionsPriv.EnableAddOrUpdateNavigateList = opt.EnableAddOrUpdateNavigateList;
+ _optionsPriv.EnableGlobalFilter = opt.EnableGlobalFilter;
+ _optionsPriv.NoneParameter = opt.NoneParameter;
_optionsPriv.OnEntityChange = opt.OnEntityChange;
}
}
diff --git a/FreeSql.DbContext/DbContext/DbContextOptions.cs b/FreeSql.DbContext/DbContext/DbContextOptions.cs
index deb9490e..e43ff5ae 100644
--- a/FreeSql.DbContext/DbContext/DbContextOptions.cs
+++ b/FreeSql.DbContext/DbContext/DbContextOptions.cs
@@ -27,6 +27,11 @@ namespace FreeSql
///
public bool? NoneParameter { get; set; }
+ ///
+ /// 是否开启 IFreeSql GlobalFilter 功能(默认:true)
+ ///
+ public bool EnableGlobalFilter { get; set; } = true;
+
///
/// 实体变化事件
///
diff --git a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
index 66310a51..2aabe397 100644
--- a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
+++ b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs
@@ -35,15 +35,21 @@ namespace FreeSql
public ISelect Select() where T1 : class
{
- _resolveDbContext?.Invoke()?.FlushCommand();
- return _originalFsql.Select().WithTransaction(_resolveUnitOfWork()?.GetOrBeginTransaction(false));
+ var db = _resolveDbContext?.Invoke();
+ db?.FlushCommand();
+ var select = _originalFsql.Select().WithTransaction(_resolveUnitOfWork()?.GetOrBeginTransaction(false));
+ if (db?.Options.EnableGlobalFilter == false) select.DisableGlobalFilter();
+ return select;
}
public ISelect Select(object dywhere) where T1 : class => Select().WhereDynamic(dywhere);
public IDelete Delete() where T1 : class
{
- _resolveDbContext?.Invoke()?.FlushCommand();
- return _originalFsql.Delete().WithTransaction(_resolveUnitOfWork()?.GetOrBeginTransaction());
+ var db = _resolveDbContext?.Invoke();
+ db?.FlushCommand();
+ var delete = _originalFsql.Delete().WithTransaction(_resolveUnitOfWork()?.GetOrBeginTransaction());
+ if (db?.Options.EnableGlobalFilter == false) delete.DisableGlobalFilter();
+ return delete;
}
public IDelete Delete(object dywhere) where T1 : class => Delete().WhereDynamic(dywhere);
@@ -53,6 +59,7 @@ namespace FreeSql
db?.FlushCommand();
var update = _originalFsql.Update().WithTransaction(_resolveUnitOfWork()?.GetOrBeginTransaction());
if (db?.Options.NoneParameter != null) update.NoneParameter(db.Options.NoneParameter.Value);
+ if (db?.Options.EnableGlobalFilter == false) update.DisableGlobalFilter();
return update;
}
public IUpdate Update(object dywhere) where T1 : class => Update().WhereDynamic(dywhere);
diff --git a/FreeSql.DbContext/DbSet/DbSet.cs b/FreeSql.DbContext/DbSet/DbSet.cs
index 1314a0d1..6af6b0d2 100644
--- a/FreeSql.DbContext/DbSet/DbSet.cs
+++ b/FreeSql.DbContext/DbSet/DbSet.cs
@@ -33,7 +33,9 @@ namespace FreeSql
protected virtual ISelect OrmSelect(object dywhere)
{
DbContextFlushCommand(); //查询前先提交,否则会出脏读
- return _db.OrmOriginal.Select().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction(false)).TrackToList(TrackToList).WhereDynamic(dywhere);
+ var select = _db.OrmOriginal.Select().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction(false)).TrackToList(TrackToList).WhereDynamic(dywhere);
+ if (_db.Options.EnableGlobalFilter == false) select.DisableGlobalFilter();
+ return select;
}
~DbSet() => this.Dispose();
@@ -65,9 +67,15 @@ namespace FreeSql
{
var update = _db.OrmOriginal.Update().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction());
if (_db.Options.NoneParameter != null) update.NoneParameter(_db.Options.NoneParameter.Value);
+ if (_db.Options.EnableGlobalFilter == false) update.DisableGlobalFilter();
return update.SetSource(entitys);
}
- protected virtual IDelete OrmDelete(object dywhere) => _db.OrmOriginal.Delete().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction()).WhereDynamic(dywhere);
+ protected virtual IDelete OrmDelete(object dywhere)
+ {
+ var delete = _db.OrmOriginal.Delete().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction()).WhereDynamic(dywhere);
+ if (_db.Options.EnableGlobalFilter == false) delete.DisableGlobalFilter();
+ return delete;
+ }
internal void EnqueueToDbContext(DbContext.EntityChangeType changeType, EntityState state) =>
_db.EnqueuePreCommand(changeType, this, typeof(EntityState), _entityType, state);
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 650dae1f..474ea8d5 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -91,6 +91,11 @@
使用无参数化设置(对应 IInsert/IUpdate)
+
+
+ 是否开启 IFreeSql GlobalFilter 功能(默认:true)
+
+
实体变化事件
@@ -481,14 +486,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs
index 003cc47c..8acbdf71 100644
--- a/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs
+++ b/FreeSql.Tests/FreeSql.Tests/UnitTest2.cs
@@ -301,6 +301,25 @@ namespace FreeSql.Tests
}
});
+ var repo_dtot22 = g.sqlite.GetRepository();
+
+ var dtot221 = repo_dtot22.Select.ToList(a => new gfDto
+ {
+ dto2 = new dfDto2
+ {
+ rowstate = a.rowstate
+ }
+ });
+
+ repo_dtot22.DbContextOptions.EnableGlobalFilter = false;
+ var dtot222 = repo_dtot22.Select.ToList(a => new gfDto
+ {
+ dto2 = new dfDto2
+ {
+ rowstate = a.rowstate
+ }
+ });
+
//List<(Guid, DateTime)> contains2linqarr = new List<(Guid, DateTime)>();
//Assert.Equal("SELECT 1 as1 FROM \"TestIgnoreDefaultValue\" a WHERE (1=0)", g.sqlite.Select().Where(a => contains2linqarr.Contains(a.Id, a.ct1)).ToSql(a => 1).Replace("\r\n", ""));
//g.sqlite.Select().Where(a => contains2linqarr.Contains(a.Id, a.ct1)).ToList();