如何将Keyword_Id = 1的所有记录更新为Keyword_Id = 2?
public class KeywordAddressCategory
{
[Key]
[Column("Keyword_Id", Order = 0)]
public int Keyword_Id { get; set; }
[Key]
[Column("Address_Id", Order = 1)]
public int Address_Id { get; set; }
[Key]
[Column("Category_Id", Order = 2)]
public int Category_Id { get; set; }
}
我得到一个例外,说我无法更新实体的密钥。
由于
答案 0 :(得分:0)
这可能是因为这三个属性都是复合主键的一部分,并且正如Entity Framework优雅地指出的那样:您无法更改主键值。
如果这是一个选项,我会考虑不使用复合主键,而是为此类使用单独的主键。您会发现使用外键更加简单。
所以,像这样:
[Key]
public int KeywordAddressCategoryId { get; set; }
public int Keyword_Id { get; set; }
public int Address_Id { get; set; }
public int Category_Id { get; set; }
使用此系统标识约束,外键,将id值作为路由值传递或作为表单中的隐藏字段传递......都变得更加容易。对于您的问题:您可以轻松更改Keyword_Id值,因为您可以轻松更改外键值。
我知道这并没有真正回答你的问题,因为我没有告诉你如何真正改变价值,但我想发布这个答案,所以也许你可以重新考虑你的数据库结构。
编辑:如果您真的不能或不愿意更改数据库结构,请参阅此问题,了解如何实现您的目标:Update part of primary key Entity Framework 4.0