修复钻取一对多子表时条件使用了字段的错误

This commit is contained in:
2023-09-26 17:55:26 +08:00
parent bc8401c8e9
commit ccebc3dea1
8 changed files with 61 additions and 28 deletions

View File

@@ -184,7 +184,7 @@ public class DataAccess : IDataAccess, ITransient, IDisposable
/// <summary>
/// 查询数据 默认方法
/// </summary>
public async Task<VmPagedOutput> QueryDataAsync(Vmodel vm, VmQueryInput input)
public async Task<VmPagedOutput> QueryDataAsync(Vmodel vm, VmListInput input)
{
ISqlSugarClient db = GetSqlSugar(vm.dbCode);
var query = db.Queryable<object>().AS(vm.tableName, VmSelectProp.MAIN_ALIES);
@@ -259,8 +259,10 @@ public class DataAccess : IDataAccess, ITransient, IDisposable
{
if (prop.navType == eNavigateType.OneToOne)
{
//以 nav_prop的形式返回
var key = prop.navCode + "_" + prop.code;
ret.Add(key, src[key]);
//以 nav.prop的形式返回
//if (!ret.ContainsKey(prop.navCode))
//{
// ret.Add(prop.navCode, new DObject());
@@ -280,10 +282,14 @@ public class DataAccess : IDataAccess, ITransient, IDisposable
var navProp = vm.navProps.First(a => a.code == prop.navCode);
if (navProp != null && navProp.naviModel != null && src.ContainsKey(navProp.refField))
{
VmQueryInput input = new VmQueryInput();
input.q = new DObject(navProp.refField, src[navProp.refField]);
input.o = string.Join(',', selProps.Where(a => a.navCode == prop.navCode).Select(a => a.code));
ret[prop.navCode] = (await QueryDataAsync(navProp.naviModel, input)).items;
VmListInput input = new VmListInput();
var fkProp = navProp.naviModel.FieldCodeToPropCode(navProp.fkField);
if (!string.IsNullOrEmpty(fkProp))
{
input.q = new DObject(fkProp, src[navProp.refField]);
input.o = string.Join(',', selProps.Where(a => a.navCode == prop.navCode).Select(a => a.code));
ret[prop.navCode] = (await QueryDataAsync(navProp.naviModel, input)).items;
}
}
}
else if (prop.navType == eNavigateType.ManyToMany)