如何通过数据库上下文向模型添加属性?

时间:2018-05-03 03:55:22

标签: c# .net entity-framework .net-core .net-standard

强文我在数据库表中有一个自动生成的字段,但此字段未添加到模型中。该模型在.net标准和框架项目之间共享。但是,在.net框架中,我需要将此字段添加到模型中以插入或更新。如果不是,我将获得 DbUpdateConcurrencyException 。在核心版本中,没有问题,并且它可以在不放置字段的情况下工作,另一方面,在更新时出现问题的字段。

该字段是一个标识字段,属性设置如下 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

如果 DatabaseGeneratedOption.computed 或在异常触发器后删除 的 DbUpdateConcurrencyException

如果映射到 DatabaseGeneratedOption.None ,则会发生以下错误 无法在表格中插入标识列的显式值'检查'当IDENTITY_INSERT设置为OFF

有人能告诉我如何在数据库上下文中以编程方式添加字段,以便我可以从模型中删除该属性,还是可以解决任何问题?

2 个答案:

答案 0 :(得分:0)

如果您是架构优先方法,则可以执行以下步骤:

1.尝试在表格上创建非身份主键列。

2.从EDMX中删除实体模型。

3.返回并将PK身份设置为true。

4.通过添加实体来更新EDMX。

答案 1 :(得分:0)

我刚刚将模型属性更改为DatabaseGeneratedOption.computed用于该属性,而.Net Framework端我用DatabaseContext中的Identity覆盖该属性