1

[問題を強調するためにすべてを削除]

SchemeRequest
------------------------------
Id
SchemeId [FK to Schemes Table]
------------------------------

using(var scope = new TransactionScope())
{
    var request = new SchemeRequest { SchemeId = [schemeId] };
    this.dbContext.SchemeRequests.Add(request);
    this.dbContext.SaveChanges();

    this.mailer.SendMail(request); // request.Scheme is null when it should not be

    scope.Complete();
}

最初にEFモデルを使用しています。SaveChanges の呼び出し後、SchemeRequest のナビゲーション プロパティのスキームは null になります。理由はわかりません。誰でも助けることができますか?正常に動作するように見える別のナビゲーション プロパティがあります。これをデバッグするにはどうすればよいですか。つまり、舞台裏で何が起こっているかを知るにはどうすればよいですか?

関係、プロパティなどを確認して再確認しましたが、すべて問題ないようです。

4

1 に答える 1

1

ナビゲーション プロパティが読み込まれることは想定されていません。ナビゲーション プロパティを設定せずに、新しいエンティティのみを保存します。親を保存するときに、EF は別のエンティティを自動的に読み込みません。

ただし、ナビゲーション プロパティは次の 2 つの状況で設定されます。

  • new で設定したwithSchemeはすでにロードされ、コンテキストにアタッチされています。EF は関係を自動的に修正し、ナビゲーション プロパティを設定します。SchemeIdSchemeRequest

  • SchemeId遅延読み込みを使用すると、アクセスするとすぐに を設定した後にナビゲーション プロパティが読み込まれます。SchemeRequestただし、を使用する代わりに、遅延読み込みプロキシとして新しいを作成する必要がありますnew

    var request = this.dbContext.SchemeRequests.Create();
    request.SchemeId = schemeId;
    
于 2012-04-30T13:11:57.320 に答える