EF を使用して DB を処理する ASP.NET MVC アプリケーションを入手しました。アーキテクチャとして DDD を使用し、リポジトリとサービスのパターンを取得しました。
DI に StructureMap を使用しようとしていますが、何らかの理由で最初のリクエストの後に DB が破棄されました。
編集:私が得ているエラーはエラーです
DbContext が破棄されているため、操作を完了できません。
たとえば、次のようなリポジトリで取得しているようです。
public class AccountRepository : Repository<Account>, IAccountRepository
{
public AccountRepository(MyDbContext context) : base(context) { }
public Account FindAccountByEmailAddress(string emailAddress, bool loadRelatedRoles = false)
{
IQueryable<Account> query = (from a in Entity
where a.LoweredEmailAddress == emailAddress.ToLower()
select a);
if (loadRelatedRoles)
{
return query.Include(a => a.Roles).FirstOrDefault();
}
return query.FirstOrDefault();
}
}
Application_BeginRequest で、次を使用して DB を登録しています
ObjectFactory.Configure(x =>
{
x.For(typeof(MyDbContext))
.HttpContextScoped();
});
リクエストごとに 1 つのインスタンスとして予約するため。
Application_EndRequest で、次を使用してリクエストをリリースしています。
protected void Application_EndRequest(object sender, EventArgs e)
{
StructureMap.ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}
何か不足していますか?または私のアプローチは問題ありませんが、リポジトリの実装に問題がある可能性があります。