4

使用 sql server profiler 我可以看到 AnswerComment 的初始查询将进入数据库,但是当我到达 ef.SaveChanges() 时,没有任何东西进入数据库。我正在使用 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();
    }
}
4

3 回答 3

6

您创建的新实例

ac = new AnswerComment();  

EF 不知道。它是 EF 从未见过的全新对象实例。

您必须将其添加到 ef.AnswerComments

ef.AnswerComments.Insert(ac);

此外,确保 ChangeTracking 对ef.

于 2012-07-09T19:05:11.050 回答
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();
于 2012-07-09T19:07:46.773 回答
0

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

ef.AnswerComments.Insert(ac);
ef.SaveChanges();
于 2012-07-09T19:07:10.690 回答