私は、ASP.NET MVC のコア機能になると思われる独自のロジックを作成しました。カスタムコードなしでこれを達成する方法を誰かが教えてくれるか、MVCチームの誰かがそれを見て重要性を認識し、MVCの将来のリリースでこれを実装することを期待して、ここに投稿しています.
したがって、モデルは常に EF オブジェクトであるとは限りません。モデルは別のものである可能性があり、他のリソースが含まれている可能性があります。特に、ViewModels の概念を使用する場合は、モデル情報とビューを提供する必要があるその他のものがあります。
とにかく、IDisposable であるモデルを見つけたので、それらを破棄する方法が必要でした。
多くの試行錯誤の後、IDisposable モデルを破棄する次の属性にたどり着きました。これは私のベース Controller クラスをデコレートするため、実行されたすべてのアクションで機能します。
internal class ModelDisposerAttribute : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
var model = filterContext.Controller.ViewData.Model as IDisposable;
if (model != null)
model.Dispose();
base.OnResultExecuted(filterContext);
}
}
あなたの考えを聞いてうれしいです!:)
乾杯。