我在嘗試更新特定記錄時遇到物體框架問題錯誤訊息顯示“屬性‘ID’是物件鍵資訊的一部分,無法修改”。我的表有一個主鍵,我不想更新 Id。這是方法
public void SetAsDefaultImage()
{
int id = Convert.ToInt32(Request.QueryString["id"].ToString());
int pid = (int)TempData["ImgProductId"];
Images defaultImage = Context.Connection.Images.FirstOrDefault(x => x.Default == true && x.ProductID==pid);
defaultImage.Default = false;
UpdateModel(defaultImage);
int result=Context.Connection.SaveChanges();
if (result > 0)
{
Images setdefault = Context.Connection.Images.First(x => x.Id == id);
setdefault.Default = true;
UpdateModel(setdefault);
Context.Connection.SaveChanges();
}
}
關于可能導致此錯誤的任何想法?
uj5u.com熱心網友回復:
問題是呼叫MVC方法UpdateModel引起的
據我了解,通常不需要 UpdateModel。當您不將模型傳遞給控制器??并希望為自己創建模型實體并希望用控制器 IValueProvider 填充它時,它會派上用場。
您呼叫的多載將嘗試填充來自 Controller IValueProvider 的每個屬性,這可能會更新 ID 屬性。UpdateModel 的其他多載更有意義,例如讓您指定要更新的屬性串列的多載。
最后,您可以簡單地洗掉對 UpdateModel 的兩次呼叫,代碼應該會按預期作業。可以通過此博客文章檢索其他一些資訊。
ASP.NET MVC 中的 UpdateModel 和 TryUpdateModel
uj5u.com熱心網友回復:
由于您正在更改兩條記錄,因此最好使用此代碼
var defaultImage = Context.Connection.Images.FirstOrDefault(x => x.Default == true && x.ProductID==pid);
defaultImage.Default = false;
var setdefault = Context.Connection.Images.First(x => x.Id == id);
setdefault.Default = true;
Context.Connection.SaveChanges();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/396946.html
標籤:C# asp.net-mvc 模型视图控制器 运行时错误
上一篇:打字稿聯合型別不會引發錯誤
