Navigate导航属性异常 返回
SqlSugar
待处理
297
悬赏:0 飞吻
SqlSuger版本: 程序集 SqlSugar, Version=5.1.4.196, Culture=neutral, PublicKeyToken=null 使用MySql 8.0,连接字符创配置了:AllowLoadLocalInfile=true
/// <summary>工站 MIL 结果矩阵(主表)</summary>
[SugarTable("MILResultMatrix")] public class MILResultMatrix
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] public long Id { get; set; }
[SugarColumn(ColumnName = "Station", Length = 256)] public string Station { get; set; }
[SugarColumn(ColumnName = "Target", DecimalDigits = 6)] public decimal Target { get; set; }
[SugarColumn(ColumnName = "Sequence")] public int Sequence { get; set; }
[SugarColumn(ColumnName = "CreateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreUpdate = true)] public DateTime CreateTime { get; set; }
[SugarColumn(ColumnName = "CreateUserId", IsNullable = true)] public int? CreateUserId { get; set; }
[SugarColumn(ColumnName = "UpdateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreInsert = true)] public DateTime? UpdateTime { get; set; }
[SugarColumn(ColumnName = "UpdateUserId", IsNullable = true)] public int? UpdateUserId { get; set; } /// <summary>一对多:同一工站下多行 StageMatrix</summary>
[Navigate(NavigateType.OneToMany, nameof(StageMatrixRow.MILResultMatrixId))] public List<StageMatrixRow> StagesMatrix { get; set; }
} /// <summary>阶段×CFG 矩阵行</summary>
[SugarTable("StageMatrixRow")] public class StageMatrixRow
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] public long Id { get; set; }
[SugarColumn(ColumnName = "MILResultMatrixId")] public long MILResultMatrixId { get; set; } /// <summary>若不需要反查主表,可整段删掉或保留并加 IsIgnore</summary>
[Navigate(NavigateType.ManyToOne, nameof(MILResultMatrixId))] public MILResultMatrix MILResultMatrix { get; set; }
[SugarColumn(ColumnName = "Stage", Length = 128)] public string Stage { get; set; } /// <summary>无 CFG 模式:数据库 NULL</summary>
[SugarColumn(ColumnName = "Cfg", Length = 128, IsNullable = true)] public string Cfg { get; set; }
[SugarColumn(ColumnName = "CreateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreUpdate = true)] public DateTime CreateTime { get; set; }
[SugarColumn(ColumnName = "CreateUserId", IsNullable = true)] public int? CreateUserId { get; set; }
[SugarColumn(ColumnName = "UpdateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreInsert = true)] public DateTime? UpdateTime { get; set; }
[SugarColumn(ColumnName = "UpdateUserId", IsNullable = true)] public int? UpdateUserId { get; set; } /// <summary>一对一:缺陷指标在子表 StageData</summary>
[Navigate(NavigateType.OneToOne, nameof(StageData.StageMatrixRowId))] public StageData DefectData { get; set; }
} /// <summary>缺陷维度数据(原 StageDataDto)</summary>
[SugarTable("StageData")] public class StageData
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] public long Id { get; set; }
[SugarColumn(ColumnName = "StageMatrixRowId")] public long StageMatrixRowId { get; set; }
[Navigate(NavigateType.OneToOne, nameof(StageMatrixRowId))] public StageMatrixRow StageMatrixRow { get; set; }
[SugarColumn(ColumnName = "Input")] public int Input { get; set; }
[SugarColumn(ColumnName = "Yield", DecimalDigits = 6)] public decimal Yield { get; set; }
[SugarColumn(ColumnName = "Defect", Length = 512)] public string Defect { get; set; }
[SugarColumn(ColumnName = "FR", DecimalDigits = 6)] public decimal FR { get; set; }
[SugarColumn(ColumnName = "DefectQty")] public int DefectQty { get; set; }
[SugarColumn(ColumnName = "CreateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreUpdate = true)] public DateTime CreateTime { get; set; }
[SugarColumn(ColumnName = "CreateUserId", IsNullable = true)] public int? CreateUserId { get; set; }
[SugarColumn(ColumnName = "UpdateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreInsert = true)] public DateTime? UpdateTime { get; set; }
[SugarColumn(ColumnName = "UpdateUserId", IsNullable = true)] public int? UpdateUserId { get; set; }
[Navigate(NavigateType.OneToMany, nameof(MILTrend.StageDataId))] public List<MILTrend> Trend { get; set; }
} /// <summary>趋势点</summary>
[SugarTable("MILTrend")] public class MILTrend
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] public long Id { get; set; } /// <summary>外键:归属哪条 StageData(原模型未显式声明,库表必需)</summary>
[SugarColumn(ColumnName = "StageDataId")] public long StageDataId { get; set; }
[Navigate(NavigateType.ManyToOne, nameof(StageDataId))] public StageData StageData { get; set; }
[SugarColumn(ColumnName = "Rate", DecimalDigits = 6)] public decimal Rate { get; set; }
[SugarColumn(ColumnName = "Qty")] public int Qty { get; set; }
[SugarColumn(ColumnName = "Date", Length = 32)] public string Date { get; set; }
[SugarColumn(ColumnName = "CreateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreUpdate = true)] public DateTime CreateTime { get; set; }
[SugarColumn(ColumnName = "CreateUserId", IsNullable = true)] public int? CreateUserId { get; set; }
[SugarColumn(ColumnName = "UpdateTime", ColumnDataType = "datetime(3)", IsOnlyIgnoreInsert = true)] public DateTime? UpdateTime { get; set; }
[SugarColumn(ColumnName = "UpdateUserId", IsNullable = true)] public int? UpdateUserId { get; set; }
}使用如下代码时报错:The column name 'SugarNav_Id' does not exist in the result set.”
var existingStageRows = await _sqlSugar.Db.Queryable<StageMatrixRow>()
.Includes(s => s.MILResultMatrix) // 暂时注释掉
.WhereIF(hasStageSelection, s => milParaDto.Stages.Contains(s.Stage))
.WhereIF(hasCfgSelection, s => milParaDto.Cfgs.Contains(s.Cfg))
.Select(s => new
{
Stage = s.Stage,
Cfg = s.Cfg,
StationKey=s.MILResultMatrix.Station+"_"+ s.MILResultMatrix.Sequence
})
.ToListAsync();
改为以下写法正常:
var existingStageRows = await _sqlSugar.Db.Queryable<StageMatrixRow>()
.LeftJoin<MILResultMatrix>((s, m) => s.MILResultMatrixId == m.Id)
.WhereIF(hasStageSelection, (s, m) => milParaDto.Stages.Contains(s.Stage))
.WhereIF(hasCfgSelection, (s, m) => milParaDto.Cfgs.Contains(s.Cfg))
.Select((s, m) => new
{
Stage = s.Stage,
Cfg = s.Cfg,
StationKey = m.Station + "_" + m.Sequence
})
.ToListAsync();