【问题标题】:Is there any way to change value of field set to "StoreGeneratedPattern=Computed"有没有办法改变字段设置为“StoreGeneratedPattern=Computed”的值
【发布时间】:2019-04-21 14:45:20
【问题描述】:

我的表中有一个int 字段设置为default 0。我将此字段的StoreGeneratedPattern 设置为Computed,但使用SaveChanges() 后无法更改此字段的值。 我在同样的问题上发现了这个answer,只是想知道是否有更好的方法来做到这一点。

编辑

这是从数据库生成的 edmx(实体框架 6)

这是添加(从我的应用程序)一些数据到表 Intervention 后的结果,正如您看到的那样,由于 IsDeleted int default 0,IsDeleted 设置为 0

但是在尝试过类似的事情之后

 db.Interventions.Find(currentInterv).IsDeleted = 1;
 db.SaveChanges();

它只是因为 StoreGeneratedPattern=Computed 而不起作用

【问题讨论】:

  • 您能否发布表格的架构以及一些示例数据和预期结果? @driwand
  • 还有什么版本的 EF,以及这是 Code-First 元数据,还是基于 EDMX 的元数据。
  • 抱歉信息不足,我已经编辑了问题

标签: c# sql-server entity-framework


【解决方案1】:

使用基于 EDMX 的 EF6,您唯一能做的就是使用存储查询来更改列值。使用代码优先,您可以创建具有不同映射元数据的附加 DbContext 子类型。

但 IsDeleted 可能不应该是 StoreGenerated。您可以在数据库和实体模型中将其默认为 0,只需将其声明为 int 而不是 int?

【讨论】:

  • 很好改变int?到 int 并将 StoreGenerated 设置为 none 解决了这个问题。但是对于日期时间(也在数据库表中设置默认值)我得到了类似i.imgur.com/3t6onSZ.png
  • 那是因为这是 .NET 的默认值。您可以在 SaveChanges 期间更改它,如您链接的答案。
猜你喜欢
  • 1970-01-01
  • 2019-11-03
  • 2011-12-10
  • 2012-07-04
  • 2023-04-10
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多