我有一个应用程序,它使用使用以下命令搭建到 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
设置会在更新和添加期间应用,但情况似乎并非如此。是否还有其他东西,最好是在脚手架期间,我可以添加以使其工作?
尝试添加这个:
ValueGeneratedOnAdd().Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);
当我在 EF 8 中收到此错误时,我通过将该列标记为备用键来修复它:
entity.HasAlternateKey(e => e.RecNo);