Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不能更改定义对象标识的LinqToSQL成员_C#_Sql_Linq To Sql - Fatal编程技术网

C# 不能更改定义对象标识的LinqToSQL成员

C# 不能更改定义对象标识的LinqToSQL成员,c#,sql,linq-to-sql,C#,Sql,Linq To Sql,我试图更新一个项目,它的一些成员已更改,所以我是这样做的 public void Update(IItem pItem) { using(GameDBDataContext db = new GameDBDataContext()) { Item old = db.Items.SingleOrDefault(x => x.id == pItem.Id); if(old != null) { Item item = pItem

我试图更新一个
项目,它的一些成员已更改,所以我是这样做的

public void Update(IItem pItem) {
    using(GameDBDataContext db = new GameDBDataContext()) {
        Item old = db.Items.SingleOrDefault(x => x.id == pItem.Id);
        if(old != null) {
            Item item = pItem as Item;

            old.id = item.id;
            old.type = item.type;
            old.owner_id = item.owner_id;
            old.player_id = item.player_id;
            old.currentdura = item.currentdura;
            old.maxdura = item.maxdura;
            old.location = item.location;
            old.socketprogress = item.socketprogress;
            old.firstsocket = item.firstsocket;
            old.secondsocket = item.secondsocket;
            old.effect = item.effect;
            old.composition = item.composition;
            old.bless = item.bless;
            old.isfree = item.isfree;
            old.enchant = item.enchant;
            old.suspicious = item.suspicious;
            old.islocked = item.islocked;
            old.color = item.color;
            old.compositionprogress = item.compositionprogress;
            old.inscribed = item.inscribed;
            old.inscribetime = item.inscribetime;
            old.amount = item.amount;

            db.SubmitChanges();
        }
    }
}
但每次我尝试更新该项时,它都会引发此异常

System.InvalidOperationException: Value of member 'location' of an object of typ
e 'Item' changed.
A member defining the identity of the object cannot be changed.
Consider adding a new object with new identity and deleting the existing one ins
tead.
   at System.Data.Linq.ChangeProcessor.CheckForInvalidChanges(TrackedObject trac
ked)
   at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   at Database.Managers.ItemManager.Update(IItem pItem) in d:\CProgramming\DarkS
iders.Core\Database\Managers\ItemManager.cs:line 59

不确定这里出了什么问题:-s

您正在尝试修改无法修改的记录id,可能是标识列。如果不必更新记录的id,请删除此语句

old.id = item.id;

您正在尝试修改无法修改的记录id,可能是标识列。如果不必更新记录的id,请删除此语句

old.id = item.id;

查看数据库,位置是否映射到作为主键一部分的列?查看此答案-查看数据库,位置是否映射到作为主键一部分的列?查看此答案-