[BUG] SqlSugarCore 5.1.4.173-preview07 在操作Sqlite3 数据库时 有篡改id 返回

SqlSugar 沟通中
3 229

当一张表
    public class T_表A
    {
        /// <summary>
        ///  数据库中数据的ID, 但如果是root根节点, 这里的值是 Guid.Empty
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = false)] //设置主键且不使用自动递增
        public Guid 表ID { get; set; }

    }
具体写入代码如下:
 SqlSugarHelper.Db.Insertable<T_表A>(root_db).ExecuteCommand();

当我表ID设置为Guid.Empty时, 执行插入, 会被ORM篡改为随机一个id
实际上, 我们需要一个全0的Guid在这个表内.
ORM框架本身不应该对这个值进行干扰修改.

不是吗?
请修订一下这个问题.

IsIdentity = false 与 .ExecuteCommand(); 没有任何作用, ORM会自动随机赋值

热忱回答3

  • fate sta fate sta VIP0
    2025/1/16

    目前GUID为主键是空会自动赋值,并不是BUG,你可以新建一个实体用string类型

    0 回复
  • 你这个逻辑, 我觉得有点问题, 全0 guid应该认为是一个普通值, 空值应该认为是null.


    在数据库设计里面很多地方不需要字段可为null

    像我与很多人都希望有一个默认值,  比如全0的guid


    我现在是手动在数据库里再赋值全0, 绕开了这个问题, 反正作为主键只有1个全0 guid


    我个人看法哈, 作为一个orm, 它应该让程序员拥有掌控权, 比如guid作为主键时, 自动赋值可能会掩盖某些问题的, 这个有点越俎代庖了.

    并且我使用的是 ExecuteCommand(), 就是想从程序角度上把控id值


    以上仅是我个人意见, 你们考虑吧。

    0 回复
  • 向你们致敬。。。。除了Unity我没法用,其他的c#程序,用你们这个 挺好的

    0 回复