实体插入数据。"属性' ID'是对象关键信息的一部分,不能修改#34;错误

时间:2014-06-16 07:46:40

标签: asp.net-mvc entity-framework-5 identity-insert

current是myclass的新实例,context.classRepo.bringcontentwithid(userid)返回它的一个实例。我将此值分配给我的新对象当前然后尝试插入在我的数据表中作为新行,但它给我一个错误,如“属性'ID'是对象的关键信息的一部分,无法修改”

我不明白的一点是我不想修改任何东西我只是帮助一个实例制作chenges并将其作为新数据插入。

我该如何解决这个问题?

   myclass current = new myclass();

    current = context.classRepo.bringcontentwithid(userid);
                    if (current != null)
                    {
                        current.id = context.classRepo.YeniBildirimIdGetir();
                        current.GONDERILDI = "1";
                        context.classRepo.Insert(current);

2 个答案:

答案 0 :(得分:0)

默认情况下,EF会将您的ID作为自动增量标识,因此,在尝试手动分配ID时,您会收到该错误。要让EF了解ID将手动分配,只需使用[DatabaseGenerated(DatabaseGeneratedOption.Assign)]装饰您的媒体资源,如下所示:

public class myClass()
{
    [DatabaseGenerated(DatabaseGeneratedOption.Assign)]
    public int ID {get;set;}
}

请务必导入名称空间System.ComponentModel.DataAnnotations.Schema

答案 1 :(得分:0)

更新数据库时无法更改id的部分,因此如果要更新文件,则应首先将其删除,然后使用新值插入,这是更新主键的安全方法(如果主键是复合键)并且您想要更新主键