sqlserver 的 tinyint 与 smallint 映射成实体时应为什么类型? 返回

SqlSugar
10 220

sqlserver 的 tinyint 与 smallint 映射成实体时应为什么类型,试了一下int 出错

热忱回答10

  • 君子 君子 VIP0
    2021/11/14

    byte 也出错,显示实体与表映射出错

    0 回复
  • fate sta fate sta VIP0
    2021/11/14


     smallint  应该对应的short

    tinyint 对应 byte 

    0 回复
  • fate sta fate sta VIP0
    2021/11/14

     不要搞反了 ,你也可以用db.Queryable<T>().ToClassString()拿到正确的实体

    0 回复
  • 君子 君子 VIP0
    2021/11/14

    测试了,数据库字段tinyint,实体为byte,运行时提示实体与表映射出错,将字段改成int,实体改成int,就不会出错.实体是视图实体,不是表实体

    0 回复
  • fate sta fate sta VIP0
    2021/11/14

    @君子:不可能的,这是最标准的,你可以把建表语句发出来

    0 回复
  • fate sta fate sta VIP0
    2021/11/14

    如果是视图查询可能查询过程中有转换

    0 回复
  • fate sta fate sta VIP0
    2021/11/14

    你可以新建一个1个字段的表进行测试

    0 回复
  • fate sta fate sta VIP0
    2021/11/14
              public class Test01 
              {
                [SugarColumn(ColumnDataType = "tinyint")]
                public byte? x { get; set; }
               }
      
             
                db.CodeFirst.InitTables<Test01>();
                db.Insertable(new Test01() { x = 1 }).ExecuteCommand();
                var xx= db.Queryable<Test01>().ToList();

    用例

    0 回复
  • 君子 君子 VIP0
    2021/11/17

     res = Dbcontext.db.Ado.SqlQuerySingle<Model.系统编码.sysCode>($"select ccode,ccode_name,igrade,bend from 部门 where ccode=@ccode", new { ccode = ccode });

    igrade 是个tinyint

    0 回复
  • 君子 君子 VIP0
    2021/11/17

    找到原因了,有两个表,一个igrade 是 tinyint,一个是 smallint,类型不一致导致的

    0 回复