PGSQL 导航查询 Select NULL异常 返回
查询报错详情:

已知能正常查询的代码:

实体:

热忱回答(17)
-
小杰 VIP0
2025/11/19get set这样试试
0 回复 -
小杰 VIP0
2025/11/19不用init
0 回复 -
欣宝 VIP0
2025/11/19@小杰:一样 报错是构建SQL的报错,和实体无关。
0 回复 -
欣宝 VIP0
2025/11/19@小杰:
0 回复 -
欣宝 VIP0
2025/11/19@小杰:
注释的部分会报错;aaa查询正常0 回复 -
欣宝 VIP0
2025/11/19.NET 10
<PackageReference Include="SqlSugarCore" Version="5.1.4.208" />
0 回复 -
fate sta VIP0
2025/11/19你看看.NET 9是否正常,我这边用.NET10测试一下。 如果.NET9正常一定是代码问题
0 回复 -
fate sta VIP0
2025/11/19我这边.NET 10所有用例跑过了未能重现你说的。
按提问模版写个用例测试是否你代码问题,如果DEMO能重现问题在发我DEMO
0 回复 -
欣宝 VIP0
2025/11/19@fate sta:我使用.NET 9也会出现这个异常 后面是Demo
0 回复 -
欣宝 VIP0
2025/11/19using Domain.Entities;
using SqlSugar;
string sqlConnStr = "PORT=*;DATABASE=*;HOST=*;USER ID=*;PASSWORD=*";
SqlSugarClient sqlSugar = new(new ConnectionConfig()
{
DbType = DbType.PostgreSQL,
ConnectionString = sqlConnStr,
IsAutoCloseConnection = true,
});
#if DEBUG
#region 迁移表配置
// 建库
sqlSugar.DbMaintenance.CreateDatabase();
// 建表
Type[] types = [.. typeof(PgEntityBase).Assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.Namespace != null && t.Namespace.StartsWith("Domain.Entities", StringComparison.OrdinalIgnoreCase) && typeof(PgEntityBase).IsAssignableFrom(t) && t.Name.EndsWith("Entity", StringComparison.OrdinalIgnoreCase))];
sqlSugar.CodeFirst.InitTables(types);
#endregion
#endif
RefAsync<int> total = 0;
var order = await sqlSugar.Queryable<OrderEntity>()
.Includes(x => x.RefundApplications).Select(x => new
{
x.OrderNo
}).ToListAsync();
sqlSugar.Close();
sqlSugar.Dispose();
namespace Domain.Entities
{
public abstract class PgEntityBase
{
/// <summary>
/// 主键编号
/// </summary>
[SugarColumn(IsPrimaryKey = true, ColumnDataType = "uuid", ColumnDescription = "主键编号")]
public Guid Id { get; set; } = Guid.CreateVersion7();
}
public abstract class OrderBussinessEntityBase : PgEntityBase
{
/// <summary>
/// 订单Id
/// </summary>
[SugarColumn(ColumnDataType = "uuid", ColumnDescription = "订单Id", IsNullable = false, DefaultValue = "00000000-0000-0000-0000-000000000000")]
public Guid OrderId { get; set; }
/// <summary>
/// 订单编号
/// </summary>
[SugarColumn(ColumnDataType = "varchar(100)", ColumnDescription = "订单编号", IsNullable = false, DefaultValue = " ")]
public string OrderNo { get; set; } = string.Empty;
}
[SugarTable("order_refund_applications")]
public class OrderRefundApplicationEntity : OrderBussinessEntityBase
{
/// <summary>
/// 退款申请原因
/// </summary>
[SugarColumn(ColumnDataType = "text", ColumnDescription = "退款申请原因", IsNullable = false, DefaultValue = " ")]
public string RefundApplicationReason { get; set; }
}
[SugarTable("orders")]
public class OrderEntity : OrderBussinessEntityBase
{
/// <summary>
/// 订单Id
/// </summary>
[SugarColumn(IsIgnore = true)]
public new Guid OrderId => Id;
/// <summary>
/// 订单编号
/// </summary>
[SugarColumn(ColumnDataType = "varchar(100)", ColumnDescription = "订单编号", IsNullable = false, DefaultValue = " ")]
public new string OrderNo { get; set; } = $"{DateTimeOffset.UtcNow:yyyyMMddHHmmssfff}{Random.Shared.Next(1000000, 9999999)}";
#region 导航属性
/// <summary>
/// 退款申请 导航字段
/// </summary>
[Navigate(NavigateType.OneToMany, nameof(OrderRefundApplicationEntity.OrderId))]
public List<OrderRefundApplicationEntity> RefundApplications { get; init; }// 导航属性禁止手动赋值
#endregion
}
}
0 回复 -
fate sta VIP0
2025/11/19.Includes(x => x.RefundApplications).Select(x => new
{
x.OrderNo,
x.RefundApplications
}).ToListAsync();
需要查询RefundApplications中对象,不然你没必要Includes
0 回复 -
欣宝 VIP0
2025/11/19@fate sta:我这个demo就只是展示异常,实际业务中肯定会使用啊
0 回复 -
欣宝 VIP0
2025/11/19@fate sta:就这个Demo就会引发异常了
0 回复 -
fate sta VIP0
2025/11/19你的DEMO并没按我要求提供,需要一个完整的可以重现的DEMO,
删掉OBJ和BIN打包上传
包括建表+测试数据
0 回复 -
fate sta VIP0
2025/11/19建议你用新DEMO测试后能重现,在打包发我。
0 回复 -
欣宝 VIP0
2025/11/20删除附件
0 回复 -
fate sta VIP0
2025/11/20SqlSugarCore 5.1.4.210
过五分钟安装这个版本,已修复
0 回复