可以为Null字段,用做参数查询条件,生成SQL语句的问题。 返回

SqlSugar 老数据
3 2204
该叫什么 flyang 发布于2019/7/17
悬赏:100 飞吻

OrgamizeModel 类有很多可以为 Null 的字段;

TenantId 可以为空,将 TenantId 做参数传递;

如果 TenantId 是 Null ,生成的 SQL 语句是 TentantId = null,查询不到任何数据,正确应该是 TenantId is null 。

如果 TenantId 非 Null ,生成的 SQL 语句没问题。

因为实体类中有很多这样可以为 Null 的字段,如果每个都要去判断是否为 Null 很不爽,请问有更简单的方法吗?


//查询代码
var query = Db.Queryable<OrganizeModel>();
var query = query.Where(q => q.TenantId == tenantId);
List<OrganizeModel> list = query.ToList();


//生成的SQL
SELECT `Id`,`TenantId`,`ParentId`,`Layers`,`CategoryId`,`ManagerId`,`RegionId`,`SortCode`,`DeletedMark`,`EnabledMark`,`CreatedTime`,`CreatorUserId`,`ModifiedTime`,`ModifierUserId`,`DeletedTime`,`DeleterUserId` 
FROM `sys_organize` WHERE (( `TenantId` = null ))


[SugarTable("sys_organize")]
public class OrganizeModel
{
  [SugarColumn(IsPrimaryKey = true, IsIdentity = false)]
  public long Id { get; set; }
  [SqlSugar.SugarColumn(IsNullable = true)]
  public long? TenantId { get; set; }
  public long ParentId { get; set; }
  public int? Layers { get; set; }
  public int? CategoryId { get; set; }
  public int? ManagerId { get; set; }
  public int? RegionId { get; set; }
  public int? SortCode { get; set; }
  public bool? DeletedMark { get; set; }
  public bool? EnabledMark { get; set; }
  public DateTime? CreatedTime { get; set; }
  public long? CreatorUserId { get; set; }
  public DateTime? ModifiedTime { get; set; }
  public long? ModifierUserId { get; set; }
  public DateTime? DeletedTime { get; set; }
  public long? DeleterUserId { get; set; }
}


热忱回答3

  • ==null

    0 回复
  • flyang flyang VIP0
    2019/7/17
    //现在是这样写的,等于Null是能查到数据的,但每次这样判断超级麻烦
    var query = Db.Queryable<OrganizeModel>();
    if (tenantId == null)
    {
        query = query.Where(q => SqlFunc.IsNullOrEmpty(q.TenantId));
    }
    else
    {
        query = query.Where(q => q.TenantId == tenantId);
    }


    0 回复
  • dbd dbd VIP0
    2019/7/18

    p.B==false||p.B==null    试试

    0 回复