一个sqlserver跨库联表查询问题 返回

SqlSugar 处理完成
4 170

[Tenant("FrameMh")]

public class sys_dbconfig

[Tenant("AA")]

public class sys_dbconfig_list

两个实体分别对应两个ConfigId,BaseDBConfig.AllConfigs是两个数据库连接,实际上两个库中都有sys_dbconfig这个表,代码如下


var client = new SqlSugarClient(BaseDBConfig.AllConfigs);

List<DbconfigViewModel> dbconfigs = client.Queryable<sys_dbconfig, sys_dbconfig_list>((o, i) => new JoinQueryInfos(

    JoinType.Inner, o.configName == i.configName

)).Where((o, i) => i.sysid == 600)

.Select((o, i) => new DbconfigViewModel { }, true)

.ToList();


没有按实体上配置的数据库连接进行跨库联表查询,哪里不对吗?重点:sys_dbconfig这个表两个库都有,但我希望使用不同库内的表联表查询


热忱回答4

  • fate sta fate sta VIP0
    1个月前
    //声名SqlSugar对象
    var db = new SqlSugarClient(new List<ConnectionConfig>()
    {
     new ConnectionConfig(){ConfigId="A",DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true},
     new ConnectionConfig(){ConfigId="B",DbType=DbType.MySql,ConnectionString=..,IsAutoCloseConnection=true  },
     new ConnectionConfig(){ConfigId="C",DbType=DbType.MySql,ConnectionString=..,IsAutoCloseConnection=true  }
    });
     
    //实体配置是哪个库
    [Tenant("A")] //实体标为A表示是A库
    public class OrderItem
    [Tenant("B")] //实体标为B表示是B库
    public class Order
       
    //联表查询要5.1.4.66+才支持
    var list = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库
            .LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId)  
            .LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId) 
            .Where((o,i,c)=> o.TypeId==1)
            .Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name })
            .ToList();
             
    //ISqlSugarClient需要转一下租户接口,才能用租户方法
    var list =db.AsTenant().QueryableWithAttr<Order>()....


    0 回复
  • fate sta fate sta VIP0
    1个月前

    QueryableWithAttr

    0 回复
  • fate sta fate sta VIP0
    1个月前

    并且用.leftjoin

    0 回复
  • 神农 神农 VIP0
    1个月前

    你好,你的问题解决了吗?我的配置的也是不同的连接,不同连接里的用户名和密码都是单独的,然后提示A连接里的用户名无权限访问b连接里的数据库的表

    0 回复