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

当一张表
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 VIP0
2025/1/16目前GUID为主键是空会自动赋值,并不是BUG,你可以新建一个实体用string类型
0 回复 -
addisjeams VIP0
2025/1/16你这个逻辑, 我觉得有点问题, 全0 guid应该认为是一个普通值, 空值应该认为是null.
在数据库设计里面很多地方不需要字段可为null
像我与很多人都希望有一个默认值, 比如全0的guid
我现在是手动在数据库里再赋值全0, 绕开了这个问题, 反正作为主键只有1个全0 guid
我个人看法哈, 作为一个orm, 它应该让程序员拥有掌控权, 比如guid作为主键时, 自动赋值可能会掩盖某些问题的, 这个有点越俎代庖了.
并且我使用的是 ExecuteCommand(), 就是想从程序角度上把控id值
以上仅是我个人意见, 你们考虑吧。
0 回复 -
addisjeams VIP0
2025/1/16向你们致敬。。。。除了Unity我没法用,其他的c#程序,用你们这个 挺好的
0 回复