1

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();
    }

何か不足していますか?または私のアプローチは問題ありませんが、リポジトリの実装に問題がある可能性があります。

4

1 に答える 1