PGSQL 导航查询 Select NULL异常 返回

SqlSugar 沟通中
17 522

查询报错详情:

image.png



已知能正常查询的代码:

image.png


实体:

image.png

热忱回答17

  • 小杰 小杰 VIP0
    2025/11/19

    get set这样试试

    0 回复
  • 小杰 小杰 VIP0
    2025/11/19

    不用init 

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    @小杰:一样  报错是构建SQL的报错,和实体无关。

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    @小杰image.png

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    @小杰image.png注释的部分会报错;aaa查询正常

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    .NET 10

    <PackageReference Include="SqlSugarCore" Version="5.1.4.208" />

    0 回复
  • fate sta fate sta VIP0
    2025/11/19

    你看看.NET 9是否正常,我这边用.NET10测试一下。 如果.NET9正常一定是代码问题

    0 回复
  • fate sta fate sta VIP0
    2025/11/19

     我这边.NET 10所有用例跑过了未能重现你说的。

     按提问模版写个用例测试是否你代码问题,如果DEMO能重现问题在发我DEMO

    https://www.donet5.com/Home/Doc?typeId=2366   

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    @fate sta:我使用.NET 9也会出现这个异常  后面是Demo

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/19

    using 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 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 fate sta VIP0
    2025/11/19

    你的DEMO并没按我要求提供,需要一个完整的可以重现的DEMO,


    删掉OBJ和BIN打包上传


    包括建表+测试数据

    0 回复
  • fate sta fate sta VIP0
    2025/11/19

    建议你用新DEMO测试后能重现,在打包发我。

    0 回复
  • 欣宝 欣宝 VIP0
    2025/11/20


    删除附件

    0 回复
  • fate sta fate sta VIP0
    2025/11/20

    SqlSugarCore 5.1.4.210


    过五分钟安装这个版本,已修复

    0 回复