3

我对 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 中对此进行了调试,并且每个步骤都没有错误地通过,即我的实体框架中存在“用户”,我的“表单”包含一个传递给“fName”的值。但是,在 SSMS 2008 中运行 SQlProfiler 并没有显示任何活动(显然没有记录在我的数据库中)。我的实体框架是以此数据库为模型的,因为当我对实体进行更新时,数据库中的更改会反映在 EF 中。

我不知道为什么 SaveChanges() 不起作用。有人可以帮忙吗?

4

2 回答 2

4

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

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

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

db.Add(usr);

然后打电话给你

db.SaveChanges()
于 2013-06-11T20:55:22.347 回答
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 */
   }

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

于 2013-06-11T22:44:58.560 回答