请教实体类有表内不存在的字段如何适配呢 返回

SqlSugar
4 214

如题,当表和实体类字段不匹配时报告:

SqlException: 列名 'xxx' 无效


但这个字段在别的返回中会用,只是图方便不希望建立太多的类。(多个查询共用一个实体类)

希望如果没有字段为空就好


PS:如果,通过select 把字段写死,不会有这个问题,但这又太麻烦。



热忱回答4

  • fate sta fate sta VIP0
    1个月前

    db.queryable<object>().As(表名).Select<公用实体>().ToList() 这样就行

    0 回复
  • @fate sta

    恩,多谢指导,的确很不错的方案。


    在追问请教一下,当基类中有个字段id,但在继承的时候改变类型,例如:

    public class TableBase{

      [SugarColumn(IsPrimaryKey = true, ColumnDataType = "int")]

      public int Id {get;set;}

    }


    public class UserTable : TableBase {

      [SugarColumn(IsPrimaryKey = true, ColumnDataType = "nvarchar(50)")]

      public new string Id {get;set;}

    }


    会出现很有意思的情况:

    1: db.queryable<object>().As('UserTable').Select<UserTable>().ToList() 会报错  " Id can't convert string to int32 "

    2: db.queryable<UserTable>().ToList() 不报错。


    按理方法2是最合理的,但方法2 就会导致无法用不匹配的字段。(出现提问的问题,多余字段会报错)


    再次感谢。



    0 回复
  • fate sta fate sta VIP0
    1个月前

    @灯笼鱼(锦): 要使用一样的Model  ,如果字段名称一样,并且字段数量一样,并且排列顺序一样



    那么他们类型必须一样,否则不行

    0 回复
  • @fate sta

    明白了,感谢细心指导。:)

    0 回复