我有带有以下字段的表(以及实体数据模型中的实体)Person
:
Name Type
SocialID String
FirstName String
LastName String
其中
SocialID
是主键。我想为每条记录更新 SocialID
的值。但是,当我尝试在 Entity Framework 中更新此字段时,出现以下错误:The property 'SocialID' is part of the object's key information and cannot
be modified.
我得到上述错误的代码是:
foreach (var p in Entity.Persons)
{
p.SocialID= p.SocialID + "00";
Entity.SaveChanges();
}
我怎么能做到这一点??
最佳答案
正如其他人所提到的,你不能在代码中做到这一点。您必须在 SQL 中进行更新。在迁移中或直接在 SQL Server Management Studio 中(如果您使用不同的数据库,则为等效项)。
UPDATE Person -- Or 'Persons' if that's what your table is called
SET SocialID = SocialID + '00'
如果您有其他表将此列用作外键,则需要做比这更多的工作(您必须首先删除约束——在所有引用您的主键的表上——然后修复数据并重新创建约束)。或者正如 Moe 在评论中所说,您可以将外键设置为在更新时级联。
关于c# - 如何更新 Entity Framework 中的主键值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14644317/