Forráskód Böngészése

扩展多库查询,根据实体类自动带上库表信息
跨库查询,或者多库查询使用方法

服务类注入(不要注入其它仓储类,直接使用此db)
private readonly ISqlSugarClient db;

非默认库查询
var colList = await db.Queryable<EduCollege>().AS()

跨库查询
await db.Queryable<SysTenant>()
.LeftJoin<EduCollege>((a, b) => a.EduCollegeId == b.Id).AS()

skywolf627 4 éve
szülő
commit
d140b380ce

+ 40 - 1
Admin.NET/Admin.NET.Core/Extension/RepositoryExtension.cs

@@ -1,4 +1,4 @@
-namespace Admin.NET.Core;
+namespace Admin.NET.Core;
 
 public static class RepositoryExtension
 {
@@ -121,4 +121,43 @@ public static class RepositoryExtension
             .EnableDiffLogEvent()
             .ExecuteCommandAsync();
     }
+
+    
+    /// <summary>
+    /// 多库查询扩展
+    /// </summary>
+    /// <param name="queryable"></param>
+    /// <returns> </returns>
+    public static ISugarQueryable<T> AS<T>(this ISugarQueryable<T> queryable)
+    {
+        var info = GetTableInfo<T>();
+        return queryable.AS<T>($"{info.Item1}.{info.Item2}");
+
+    }
+
+    /// <summary>
+    /// 多库查询扩展
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <typeparam name="T2"></typeparam>
+    /// <param name="queryable"></param>
+    /// <returns></returns>
+    public static ISugarQueryable<T, T2> AS<T, T2>(this ISugarQueryable<T, T2> queryable)
+    {
+        var info = GetTableInfo<T2>();
+        return queryable.AS<T2>($"{info.Item1}.{info.Item2}");
+    }
+
+    /// <summary>
+    /// 根据实体类型获取表信息
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <returns></returns>
+    private static Tuple<string, string> GetTableInfo<T>()
+    {
+        var entityType = typeof(T);
+        var configId = entityType.GetCustomAttribute<SqlSugarEntityAttribute>().DbConfigId;
+        var tableName = entityType.GetCustomAttribute<SugarTable>().TableName;
+        return new Tuple<string, string>(configId, tableName);
+    }
 }