ASP.NET MVC アプリケーションを取得し、最初に EF コードと Unity 依存関係インジェクターを使用しています。DDD 設計を実装し、POCO オブジェクトとやり取りするリポジトリとサービスを用意しました。
私の問題は、接続が閉じられた、エンティティが変更された、追跡されていないなど、EF関連の問題が発生していることです。Google での調査から理解したように、Unity の構成方法に関連していました。
リクエストインスタンスごとに配置する必要があることは理解しましたが、UnityにもUnity.Mvc3パッケージにも組み込みの戦略はありません。私は多くの問題を解決した独自の戦略を書こうとしましたが、「接続が閉じられる」ことがあるという問題に固執しています。
私の HttpContextLifetimeManager.cs
public class HttpContextLifetimeManager<T> : LifetimeManager, IDisposable
{
public override object GetValue()
{
return HttpContext.Current.Items[typeof(T).AssemblyQualifiedName];
}
public override void RemoveValue()
{
HttpContext.Current.Items.Remove(typeof(T).AssemblyQualifiedName);
}
public override void SetValue(object newValue)
{
HttpContext.Current.Items[typeof(T).AssemblyQualifiedName] = newValue;
}
public void Dispose()
{
RemoveValue();
}
}
そして、DependencyConfig.cs (MVC 4 App_Start) 内で、次を使用して登録しています。
container.RegisterInstance<MyDbContext>(new MyDbContext(), new HttpContextLifetimeManager<DependencyConfig>());
機能する実装をお勧めします/私の問題を修正するのに役立ちます/その問題を解決するのに役立つ記事またはチュートリアルに転送してくれますか?
どうもありがとう。