からナビゲーションプロパティを含むIは、以下に示すように(.Include
を使用して積極的なロードを定義することによって)Session
オブジェクトと関連Medicine object
を取得するために、私のリポジトリクラス内に以下のメソッドを持っていない: -イーガーローディング私のリポジトリクラス
public Session GetSession(int id)
{
return entities.Sessions.Include(d => d.Medicine).FirstOrDefault(d => d.SessionID == id);
}
次のように上記のリポジトリメソッドルック呼び出す
私のアクションメソッド: -
[HttpPost]
public ActionResult Delete(int id)
{
try
{
//string desc;
var s = repository.GetSession(id);
repository.DeleteSession(s);
repository.Save();
return Json(new { IsSuccess = "True", id = s.SessionID, description = s.Medicine.Name }, JsonRequestBehavior.AllowGet);
}
catch (ArgumentNullException)
//code goes here
私が直面しています問題は、物理的にを使用してオブジェクトを削除した後、メモリからMedicine navigation property
にアクセスできなくなります。次の例外が発生します。ユーザコードでNullReferenceExceptionが処理されていませんでした。s.SessionID
にアクセスできますが、削除した後でもメモリにアクセスできます。これは、削除されたSession
オブジェクトが(熱心な読み込みをしていない)でないことを意味しますMedicine
ナビゲーションプロパティ!!! BR
返信ありがとうございます。薬局IDである薬局のPKを参照する外来キーがセッションテーブル(medicineId)にあります。 –