一个sqlserver跨库联表查询问题 返回
[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 VIP01个月前
//声名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 VIP01个月前
QueryableWithAttr
0 回复 -
fate sta VIP01个月前
并且用.leftjoin
0 回复 -
神农 VIP01个月前
你好,你的问题解决了吗?我的配置的也是不同的连接,不同连接里的用户名和密码都是单独的,然后提示A连接里的用户名无权限访问b连接里的数据库的表
0 回复