diff --git a/Src/Asp.NetCore2/SqliteTest/UserTestCases/CrossDatabase04.cs b/Src/Asp.NetCore2/SqliteTest/UserTestCases/CrossDatabase04.cs new file mode 100644 index 000000000..7e29a0e58 --- /dev/null +++ b/Src/Asp.NetCore2/SqliteTest/UserTestCases/CrossDatabase04.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using SqlSugar; +namespace OrmTest +{ + public class CrossDatabase04 + { + public static void Init() + { + + var db = new SqlSugarClient(new List() + { + new ConnectionConfig(){ConfigId="A",DbType=DbType.Sqlite,ConnectionString="DataSource=/A_DB.sqlite",IsAutoCloseConnection=true, + ConfigureExternalServices=new ConfigureExternalServices(){ + EntityNameService=(x,y)=>{ + y.DbTableName=y.DbTableName.ToLower(); + }, + EntityService=(x,y)=>{ + y.DbColumnName=y.DbColumnName?.ToLower(); + } + } + }, + new ConnectionConfig(){ConfigId="B",DbType=DbType.Sqlite,ConnectionString="DataSource=/B_DB.sqlite",IsAutoCloseConnection=true, + ConfigureExternalServices=new ConfigureExternalServices(){ + EntityNameService=(x,y)=>{ + y.DbTableName=y.DbTableName.ToUpper(); + }, + EntityService=(x,y)=>{ + y.DbColumnName=y.DbColumnName?.ToUpper(); + } + }}, + new ConnectionConfig(){ConfigId="AB",DbType=DbType.Sqlite,ConnectionString="DataSource=/AB_DB.sqlite",IsAutoCloseConnection=true } + }); + db.GetConnection("A").Aop.OnLogExecuting = + db.GetConnection("B").Aop.OnLogExecuting = + db.GetConnection("AB").Aop.OnLogExecuting = (s, p) => + { + + Console.WriteLine(s); + }; + + + db.GetConnection("A").CodeFirst.InitTables(); + db.GetConnection("B").CodeFirst.InitTables(); + db.GetConnection("AB").CodeFirst.InitTables(); + + db.GetConnection("A").DbMaintenance.TruncateTable(); + db.GetConnection("B").DbMaintenance.TruncateTable(); + db.GetConnection("AB").DbMaintenance.TruncateTable(); + + db.GetConnection("A").Insertable(new OperatorInfo() { id = 10, realname = "A" }).ExecuteCommand(); + db.GetConnection("B").Insertable(new Role() { id = 101, name = "B" }).ExecuteCommand(); + db.GetConnection("AB").Insertable(new OptRole() { Id = 1, OperId = 10, RoleId = 101 }).ExecuteCommand(); + + var x = db.GetConnection("A").Queryable() + .CrossQuery(typeof(Role),"B") + .CrossQuery(typeof(OptRole), "AB") + .Includes(z => z.Roles.Where(it=>it.id==1).ToList()).ToList(); + + + } + /// + /// 描述: + /// 作者:synjones + /// 时间:2022-04-20 21:30:28 + /// + [SugarTable("unit_operatorinfo213")] + [Tenant("A")] + public partial class OperatorInfo + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true)] + public int id { get; set; } + + /// + /// 姓名 + /// + public string realname { get; set; } + + /// + /// 多角色 + /// + [Navigate(typeof(OptRole), nameof(OptRole.OperId), nameof(OptRole.RoleId))]//名字换 + public List Roles { get; set; } + } + + /// + /// 描述: + /// 作者:synjones + /// 时间:2022-04-20 21:30:28 + /// + [SugarTable("unit_role112313")] + [Tenant("B")] + public partial class Role + { + /// + /// 角色 + /// + [SugarColumn(IsPrimaryKey = true)] + public int id { get; set; } + + /// + /// 角色名称 + /// + public string name { get; set; } + + } + + + /// + /// 描述: + /// 作者:synjones + /// 时间:2022-04-21 14:35:09 + /// + [SugarTable("Unit_Operator_Role123131")] + [Tenant("AB")] + public partial class OptRole + { + /// + /// + /// + [SugarColumn(IsPrimaryKey = true)] + public int Id { get; set; } + + /// + /// + /// + public int OperId { get; set; } + + /// + /// + /// + public int RoleId { get; set; } + + + } + } +}