更新具有 Guid 主键和另一列是身份规范的记录

问题描述 投票:0回答:2

我有一个应用程序,它使用使用以下命令搭建到 EF 的数据库:

dotnet ef dbcontext scaffold "Server=MyServer;Database=MyDatabase;Trusted_Connection=True;Trust Server Certificate=true" 
       Microsoft.EntityFrameworkCore.SqlServer -o Entities -f --no-onconfiguring

当它生成实体时,相关表具有以下集合:

entity.Property(e => e.RecNo).ValueGeneratedOnAdd();

当我尝试更新该表的记录时,问题就出现了。

我收到错误:

Microsoft.EntityFrameworkCore.DbUpdateException:保存实体更改时发生错误。有关详细信息,请参阅内部异常。

Microsoft.Data.SqlClient.SqlException(0x80131904):无法更新标识列“RecNo”。

看起来

ValueGeneratedOnAdd
设置会在更新和添加期间应用,但情况似乎并非如此。是否还有其他东西,最好是在脚手架期间,我可以添加以使其工作?

c# sql-server .net-core entity-framework-core
2个回答
1
投票

尝试添加这个:

ValueGeneratedOnAdd().Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);

0
投票

当我在 EF 8 中收到此错误时,我通过将该列标记为备用键来修复它:

entity.HasAlternateKey(e => e.RecNo);
© www.soinside.com 2019 - 2024. All rights reserved.