更新未反映在表中

本文关键字:更新 | 更新日期: 2023-09-27 17:51:12

这是我在Home控制器中定义的用于更新行的动作方法

[HttpPost]
public ActionResult UpdateISRCEntry(ABC.Models.tbl1 z, List<string> verticall,string Album, string Song)
{
    if (Session["user"] != null)
    {               
        if (verticall != null)
        {
            foreach (string s1 in verticall)
            {
                if (s1 == "Radio")
                { z.Radio = "Radio"; }
                if (s1 == "Online")
                { z.Online = "Online"; }
                if (s1 == "Mobile")
                { z.Mobile = "Mobile"; }
            }
        }
        tbl1.Service.Class1.updatetbl1(z, Album, Song);
        return RedirectToAction("Home");                
    }
    else
    {
        return RedirectToAction("Index");
    }
}

和下面是我的方法已经在class1实现可更新的行

public static bool updatetbl1(tbl1 obj, string Album, string Song)
{
    ABC.Models.tbl1 objmain = new Models.mainISRC();
    using (ABCManagementDBEntities1 dbcontect = new ABCManagementDBEntities1())
    {
        var zz = (from z in dbcontect.tbl1 
                  where z.Album == Album && z.Song == Song select z
                 ).SingleOrDefault();
        objmain.Mood = obj.Mood;
        objmain.Online = obj.Online;
        objmain.Radio = obj.Radio;
        dbcontect.SaveChanges();
        return true;
    }
    return false;
}

所有这些代码都成功运行,但更新没有反映在我的表中。然而,在运行我的代码期间,没有出现任何类型的错误。请帮帮别人吧。

更新未反映在表中

dbcontect.SaveChanges();前添加

dbcontect.Entry(objmain).State = EntityState.Modified;
dbcontect.SaveChanges();

或者我想这就行了

this.UpdateModel(objmain);
dbcontect.SaveChanges();

你应该在SaveChanges()

之前更新实体

为什么你拉zz对象而从不使用它?按照您编写"updatetbl1"方法的方式,您正在向数据库插入一个新对象(objmain),而不是更新zz对象。我的假设正确吗?

我认为应该是这样的:

public static bool updatetbl1(tbl1 obj, string Album, string Song)
{
    ABC.Models.tbl1 objmain = new Models.mainISRC();
    using (ABCManagementDBEntities1 dbcontect = new ABCManagementDBEntities1())
    {
        var zz = (from z in dbcontect.tbl1 
              where z.Album == Album && z.Song == Song select z
             ).SingleOrDefault();
        zz.Mood = obj.Mood;
        zz.Online = obj.Online;
        zz.Radio = obj.Radio;
        dbcontect.Entry(zz).State = EntityState.Modified;
        dbcontect.SaveChanges();
        return true;
    }
    return false;
}