diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 537315e2..26522f10 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -800,5 +800,14 @@
             
             
         
+        
+            
+            批量注入 Repository,可以参考代码自行调整
+            
+            
+            
+            
+            
+        
     
 
diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
index a0d7a412..4ee3e866 100644
--- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
+++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
@@ -149,6 +149,11 @@
             用户
             
         
+        
+            
+            用户
+            
+        
         
             
             收款金额
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/1208.cs b/FreeSql.Tests/FreeSql.Tests/Issues/1208.cs
index 22f81bce..5358365d 100644
--- a/FreeSql.Tests/FreeSql.Tests/Issues/1208.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/1208.cs
@@ -8,7 +8,7 @@ namespace FreeSql.Tests.Issues
     public class _1208
     {
         [Fact]
-        public void GlobalFilter()
+        public void GlobalFilter01()
         {
             using (var fsql = new FreeSqlBuilder()
               .UseConnectionString(DataType.Sqlite, "data source=:memory:")
@@ -171,6 +171,174 @@ ORDER BY a.""Id"" DESC", sql);
             public ICollection Users { get; set; }
             public int TenantId { get; set; }
         }
-    }
 
+        [Fact]
+        public void GlobalFilter02()
+        {
+            using (var fsql = new FreeSqlBuilder()
+              .UseConnectionString(DataType.Sqlite, "data source=:memory:")
+              .UseAutoSyncStructure(true)
+              .Build())
+            {
+                fsql.GlobalFilter.Apply("TenantQuery", a => a.TenantId == 100);
+                fsql.GlobalFilter.Apply("SoftDeleted", a => a.SoftDeleted == false);
+
+                var userRepository = fsql.GetRepository();
+
+                var deviceId = 100;
+                var sql = userRepository.Select
+                            .Where(i => i.DoorDevices.AsSelect().Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDeviceUser02"" Mx_Mi 
+    WHERE (Mx_Mi.""UserId"" = a.""Id"") AND (exists(SELECT 1 
+        FROM ""issues1208_DoorDevice02"" x 
+        WHERE (x.""Id"" = 100) AND (x.""Id"" = Mx_Mi.""DoorDeviceId"") AND (x.""TenantId"" = 100) AND (x.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (Mx_Mi.""TenantId"" = 100) AND (Mx_Mi.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""TenantId"" = 100) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+
+                sql = userRepository.Select
+                            .Where(i => i.DoorDevices.AsSelect().DisableGlobalFilter("TenantQuery").Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDeviceUser02"" Mx_Mi 
+    WHERE (Mx_Mi.""UserId"" = a.""Id"") AND (exists(SELECT 1 
+        FROM ""issues1208_DoorDevice02"" x 
+        WHERE (x.""Id"" = 100) AND (x.""Id"" = Mx_Mi.""DoorDeviceId"") AND (x.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (Mx_Mi.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""TenantId"" = 100) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+
+                sql = userRepository.Select.DisableGlobalFilter("TenantQuery")
+                            .Where(i => i.DoorDevices.AsSelect().Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDeviceUser02"" Mx_Mi 
+    WHERE (Mx_Mi.""UserId"" = a.""Id"") AND (exists(SELECT 1 
+        FROM ""issues1208_DoorDevice02"" x 
+        WHERE (x.""Id"" = 100) AND (x.""Id"" = Mx_Mi.""DoorDeviceId"") AND (x.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (Mx_Mi.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+
+                using (userRepository.DataFilter.Disable("TenantQuery"))
+                {
+                    sql = userRepository.Select
+                            .Where(i => i.DoorDevices.AsSelect().Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                    Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDeviceUser02"" Mx_Mi 
+    WHERE (Mx_Mi.""UserId"" = a.""Id"") AND (exists(SELECT 1 
+        FROM ""issues1208_DoorDevice02"" x 
+        WHERE (x.""Id"" = 100) AND (x.""Id"" = Mx_Mi.""DoorDeviceId"") AND (x.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (Mx_Mi.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+                }
+
+                sql = userRepository.Select
+                            .Where(i => i.DoorDevices.Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDevice02"" x 
+    WHERE (exists(SELECT 1 
+        FROM ""issues1208_DoorDeviceUser02"" Mx_Ma 
+        WHERE (Mx_Ma.""DoorDeviceId"" = x.""Id"") AND (Mx_Ma.""UserId"" = a.""Id"") AND (Mx_Ma.""TenantId"" = 100) AND (Mx_Ma.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (x.""Id"" = 100) AND (x.""TenantId"" = 100) AND (x.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""TenantId"" = 100) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+
+                sql = userRepository.Select.DisableGlobalFilter("TenantQuery")
+                            .Where(i => i.DoorDevices.Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDevice02"" x 
+    WHERE (exists(SELECT 1 
+        FROM ""issues1208_DoorDeviceUser02"" Mx_Ma 
+        WHERE (Mx_Ma.""DoorDeviceId"" = x.""Id"") AND (Mx_Ma.""UserId"" = a.""Id"") AND (Mx_Ma.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (x.""Id"" = 100) AND (x.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+
+                using (userRepository.DataFilter.Disable("TenantQuery"))
+                {
+                    sql = userRepository.Select
+                            .Where(i => i.DoorDevices.Any(x => x.Id == deviceId))
+                            .OrderByDescending(true, a => a.Id)
+                            .ToSql();
+                    Assert.Equal(@"SELECT a.""Id"", a.""TenantId"", a.""SoftDeleted"" 
+FROM ""issues1208_User02"" a 
+WHERE (exists(SELECT 1 
+    FROM ""issues1208_DoorDevice02"" x 
+    WHERE (exists(SELECT 1 
+        FROM ""issues1208_DoorDeviceUser02"" Mx_Ma 
+        WHERE (Mx_Ma.""DoorDeviceId"" = x.""Id"") AND (Mx_Ma.""UserId"" = a.""Id"") AND (Mx_Ma.""SoftDeleted"" = 0) 
+        limit 0,1)) AND (x.""Id"" = 100) AND (x.""SoftDeleted"" = 0) 
+    limit 0,1)) AND (a.""SoftDeleted"" = 0) 
+ORDER BY a.""Id"" DESC", sql);
+                }
+            }
+        }
+
+        [Table(Name = "issues1208_User02")]
+        class UserEntity02
+        {
+            [Column(IsIdentity = true)]
+            public int Id { get; set; }
+
+            [Navigate(ManyToMany = typeof(DoorDeviceUserEntity02))]
+            public ICollection DoorDevices { get; set; }
+
+            public int TenantId { get; set; }
+            public bool SoftDeleted { get; set; }
+        }
+        [Table(Name = "issues1208_DoorDeviceUser02")]
+        class DoorDeviceUserEntity02
+        {
+            public int UserId { get; set; }
+
+            [Navigate(nameof(UserId))]
+            public UserEntity02 User { get; set; }
+
+            public int DoorDeviceId { get; set; }
+
+            [Navigate(nameof(DoorDeviceId))]
+            public DoorDeviceEntity02 DoorDevice { get; set; }
+            public int TenantId { get; set; }
+            public bool SoftDeleted { get; set; }
+        }
+        [Table(Name = "issues1208_DoorDevice02")]
+        class DoorDeviceEntity02
+        {
+            [Column(IsIdentity = true)]
+            public int Id { get; set; }
+
+            /// 
+            /// 用户
+            /// 
+            [Navigate(ManyToMany = typeof(DoorDeviceUserEntity02))]
+            public ICollection Users { get; set; }
+            public int TenantId { get; set; }
+            public bool SoftDeleted { get; set; }
+        }
+    }
 }
diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs
index 9c0bf50d..645876d0 100644
--- a/FreeSql/Internal/CommonExpression.cs
+++ b/FreeSql/Internal/CommonExpression.cs
@@ -1241,14 +1241,8 @@ namespace FreeSql.Internal
                                         }
                                         if (tsc.whereGlobalFilter != null)
                                         {
-                                            if (tsc.whereGlobalFilter.Any() == false)
-                                                fsqlSelect0._whereGlobalFilter.Clear();
-                                            else
-                                            {
-                                                var fsqlGlobalFilter = fsqlSelect0._whereGlobalFilter;
-                                                if (fsqlGlobalFilter != tsc.whereGlobalFilter)
-                                                    fsqlGlobalFilter.AddRange(tsc.whereGlobalFilter.Where(b => !fsqlGlobalFilter.Any(a => a.Name == b.Name)));
-                                            }
+                                            fsqlSelect0._whereGlobalFilter.Clear();
+                                            if (tsc.whereGlobalFilter.Any()) fsqlSelect0._whereGlobalFilter.AddRange(tsc.whereGlobalFilter);
                                         }
                                     }
                                     else if (fsqlType != null)
@@ -2375,14 +2369,8 @@ namespace FreeSql.Internal
                         if (tableRule != null) midSelect._tableRules.Add(tableRule);
                         if (whereGlobalFilter != null)
                         {
-                            if (whereGlobalFilter.Any() == false)
-                                midSelect._whereGlobalFilter.Clear();
-                            else
-                            {
-                                var fsqlGlobalFilter = midSelect._whereGlobalFilter;
-                                if (fsqlGlobalFilter != whereGlobalFilter)
-                                    fsqlGlobalFilter.AddRange(whereGlobalFilter.Where(b => !fsqlGlobalFilter.Any(a => a.Name == b.Name)));
-                            }
+                            midSelect._whereGlobalFilter.Clear();
+                            if (whereGlobalFilter.Any()) midSelect._whereGlobalFilter.AddRange(whereGlobalFilter);
                         }
                         switch (commonExp._ado.DataType)
                         {
@@ -2443,14 +2431,8 @@ namespace FreeSql.Internal
                 if (tableRule != null) select._tableRules.Add(tableRule);
                 if (whereGlobalFilter != null)
                 {
-                    if (whereGlobalFilter.Any() == false)
-                        select._whereGlobalFilter.Clear();
-                    else
-                    {
-                        var fsqlGlobalFilter = select._whereGlobalFilter;
-                        if (fsqlGlobalFilter != whereGlobalFilter)
-                            fsqlGlobalFilter.AddRange(whereGlobalFilter.Where(b => !fsqlGlobalFilter.Any(a => a.Name == b.Name)));
-                    }
+                    select._whereGlobalFilter.Clear();
+                    if (whereGlobalFilter.Any()) select._whereGlobalFilter.AddRange(whereGlobalFilter);
                 }
             }
             while (true)