【问题标题】:How can I prevent a property from updating, which is marked as "UseNpgsqlIdentityAlwaysColumn()" using npgsql - postgresql如何防止属性更新,使用 npgsql - postgresql 标记为“UseNpgsqlIdentityAlwaysColumn()”
【发布时间】:2020-01-22 10:12:31
【问题描述】:

我将 postgresql db 与 entityframework 核心和 npgsql 核心一起使用。我有一个名为“索引”的属性,它是身份类型列。索引列不是ID列,而是db生成的序列列。它标有“UseNpgsqlIdentityAlwaysColumn()”以在添加时由 db 生成值。

插入(添加)操作没有问题。但是,在更新实体时,我收到错误“428C9:列“索引”只能更新为默认值”

我试图标记为“ValueGeneratedOnAdd()”。但这没有帮助。

builder.Property(x => x.Index).ValueGeneratedOnAdd().UseNpgsqlIdentityAlwaysColumn();

如何更新忽略“索引”属性的实体?

非常感谢。

【问题讨论】:

  • 您是否尝试更新索引属性的值?如果是这样,那对于 IDENTITY ALWAYS 列是不可能的,但是对于 IDENTITY BY DEFAULT 列是可能的。如果你有不同的问题,你能发布一个完整的代码示例吗?
  • 不管用ValueGeneratedOnAdd

标签: c# postgresql entity-framework-core npgsql ef-core-2.2


【解决方案1】:

一些讨厌的解决方法将其标记为未修改。只需使用一些存储库模式和 vuola

 db.Entry(model).State = EntityState.Modified;
 db.Entry(model).Property(x => x.Index).IsModified = false;
 db.SaveChanges();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多