之前更新实体
这是我在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;
}