fix: 修复套餐草稿默认值哨兵问题
This commit is contained in:
@@ -680,10 +680,12 @@ public sealed class TakeoutAppDbContext(
|
||||
builder.Property(x => x.PublishStatus)
|
||||
.HasConversion<int>()
|
||||
.HasDefaultValue(TenantPackagePublishStatus.Draft)
|
||||
.HasSentinel((TenantPackagePublishStatus)(-1))
|
||||
.HasComment("发布状态:0=草稿,1=已发布。");
|
||||
|
||||
// 1. 解决 EF Core 默认值哨兵问题:当我们希望插入 false/0 时,若数据库配置了 default 且 EF 认为该值是“未设置”,会导致 insert 省略列,最终落库为默认值。
|
||||
// 2. (空行后) 将哨兵值设置为数据库默认值:true 作为哨兵,false 才会被显式写入,从而保证“可见性/可售开关”在新增时可正确落库。
|
||||
// 2. (空行后) 发布状态使用 -1 作为哨兵,避免 Draft=0 被误判为“未设置”而触发数据库默认值(发布/草稿切换必须可控)。
|
||||
// 3. (空行后) 将布尔开关哨兵值设置为数据库默认值:true 作为哨兵,false 才会被显式写入,从而保证“可见性/可售开关”在新增时可正确落库。
|
||||
builder.Property(x => x.IsPublicVisible)
|
||||
.HasDefaultValue(true)
|
||||
.HasSentinel(true)
|
||||
|
||||
Reference in New Issue
Block a user