联表查询部分字段SQL问题 返回
public class StudentEntity
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "學生ID")]
public int Id { get; set; }
[SugarColumn(ColumnDescription = "班級ID")]
public int ClassId { get; set; }
[Navigate(NavigateType.OneToOne, nameof(ClassId))]
public ClassEntity Class { get; set; }
[SugarColumn(ColumnDescription = "姓名", Length = 50)]
public string Name { get; set; }
[SugarColumn(ColumnDescription = "更新時間")]
public DateTime UpdatedAt { get; set; }
[SugarColumn(ColumnDescription = "更新人員")]
public int UpdatedBy { get; set; }
}
public class ClassEntity
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "班級ID")]
public int Id { get; set; }
[SugarColumn(ColumnDescription = "班級名稱", Length = 50)]
public string Name { get; set; }
[SugarColumn(ColumnDescription = "班主任", Length = 50)]
public string Teacher { get; set; }
[SugarColumn(ColumnDescription = "學生人數")]
public int StudentCount { get; set; } = 0;
[SugarColumn(ColumnDescription = "更新時間")]
public DateTime UpdatedAt { get; set; }
[SugarColumn(ColumnDescription = "更新人員")]
public int UpdatedBy { get; set; }
}
使用LeftJoin只查询Class部分字段,SQL正常
await _studentRep.AsQueryable()
.LeftJoin<ClassEntity>((s, c) => s.ClassId == c.Id)
.Select((s, c) => new StudentEntity
{
Class = new ClassEntity { Teacher = c.Teacher },
}, true)
.ToListAsync()
SELECT `c`.`Teacher` AS `Class.Teacher` ,`s`.`Id` AS `Id` ,`s`.`ClassId` AS `ClassId` ,`s`.`Name` AS `Name` ,`s`.`UpdatedAt` AS `UpdatedAt` ,`s`.`UpdatedBy` AS `UpdatedBy` FROM `STUDENT` `s` Left JOIN `CLASS` `c` ON ( `s`.`ClassId` = `c`.`Id` )
使用IncludeLeftJoin只查询Class部分字段,SQL无法执行
await _studentRep.AsQueryable()
.IncludeLeftJoin(x => x.Class)
.Select(x => new StudentEntity
{
Class = new ClassEntity { Teacher = x.Class.Teacher },
}, true)
.ToListAsync()
SELECT x.Class.`pnv_Class`.`Teacher` AS `Class.Teacher` ,`x`.`Id` AS `Id` ,`x`.`ClassId` AS `ClassId` ,`x`.`Name` AS `Name` ,`x`.`UpdatedAt` AS `UpdatedAt` ,`x`.`UpdatedBy` AS `UpdatedBy` FROM `STUDENT` `x` Left JOIN `CLASS` `pnv_Class` ON `pnv_Class`.`Id`=`x`.`ClassId`
不知道这个是否可以优化?
热忱回答(2)
-
fate sta VIP0
1周前太复杂的不支持。
0 回复 -
fate sta VIP0
1周前查询对象应该是 .Includes 不过支持=new xxx{导航}
0 回复