实体框架SaveChanges不更新数据库

时间:2012-07-09 19:01:43

标签: .net entity-framework

使用sql server profiler我可以看到AnswerComment的初始查询是转到db,但是当我到达ef.SaveChanges()时,没有任何内容进入db。我正在使用sqlexpress 2008 R2。

using (TPRDEntities ef = new TPRDEntities())
{
    var ac = ef.AnswerComments.Where(a => a.AnswerCommentID == answercomment.AnswerCommentID).FirstOrDefault();

    if (ac == null)
    {
        ac = new AnswerComment();
        ac.AnswerID = answercomment.AnswerID;
        ac.DisplayText = answercomment.DisplayText;
        ac.InsertDate = answercomment.InsertDate;
        ac.InsertUser = "save test user";
        ef.SaveChanges();
    }
}

3 个答案:

答案 0 :(得分:6)

您创建的新实例

ac = new AnswerComment();  
EF不知道

。这是EF以前从未见过的一个全新的对象实例。

您必须将其添加到ef.AnswerComments

ef.AnswerComments.Insert(ac);

另外,请确保ef的更改跟踪处于活动状态。

答案 1 :(得分:1)

我认为您错过了将AnswerComment添加到上下文中,您必须这样做:

ac = new AnswerComment();
ac.AnswerID = answercomment.AnswerID;
ac.DisplayText = answercomment.DisplayText;
ac.InsertDate = answercomment.InsertDate;
ac.InsertUser = "save test user";

ef.AnswerComments.Add(ac);
ef.SaveChanges();

答案 2 :(得分:0)

您永远不会将新项目插入表格中:

ef.AnswerComments.Insert(ac);
ef.SaveChanges();