4

SQL Server Profilerを使用すると、AnswerCommentの最初のクエリがデータベースに送信されることがわかりますが、ef.SaveChanges()にアクセスすると、データベースに何も取得されません。sqlexpress2008R2を使用しています。

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 に答える