SaveChanges()不保存数据

时间:2013-06-11 20:41:56

标签: asp.net-mvc visual-studio-2010 sql-server-2008 c#-4.0

我对MVC很新,所以请耐心等待。这是我正在处理的MVC项目中我的控制器中的动作代码:

[HttpPost]
public ActionResult Create(User usr , string submitBtn, FormCollection form, int id)
{
    var db = new UsrSqlEntities();

    foreach (string fm in form)
    {
        if (fm.Contains("PayMonthOne"))
            usr.fName = Int32.Parse(form[fm]);

    }

    db.SaveChanges();
}

我在VS2010中对此进行了调试,每一步都没有错误,即我的实体框架中存在“用户”,我的'form'包含一个传递给'fName'的值。但是,在SSMS 2008中运行SQlProfiler不会显示任何活动(显然不会在我的数据库中记录)。我的实体框架在此数据库上建模,因为当我对实体进行更新时,数据库中的更改会反映在EF中。

我不知道为什么SaveChanges()无效。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

如果要更新实体,则需要将usr对象连接到db上下文并将其标记为已修改。

db.Attach(usr);
db.Context.Entry(usr).State = EntityState.Modified;

如果是新的,您需要通过以下方式添加:

db.Add(usr);

然后打电话给你

db.SaveChanges()

答案 1 :(得分:1)

我会推荐以下内容:

   var db=new UsrSqlEntities(); /* Module Level declaration */

   [HttpPost]
   public ActionResult Create(User usr)
   {
       db.Users.Add(usr); /* Add usr object to Users DbSet */

       db.SaveChanges(); /* Save all changes to the database */
   }

这假定您正在创建一个新用户,而Users是您的用户对象的DbSet,并且您的User对象具有int或int类型的属性“PayMonthOne”。