Asp.net mvc 3 在全局.Asax ApplciaitonStart中使用Database.SetInitializer时出现“已打开DataReader…”错误

Asp.net mvc 3 在全局.Asax ApplciaitonStart中使用Database.SetInitializer时出现“已打开DataReader…”错误,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,我想知道是否有其他人对从全局asax运行DB初始值设定项有问题 我在ApplicationStart中有以下内容: Database.SetInitializer(new MyInitializer()); 这运行正常,在应用程序启动之后,我尝试在服务中创建的登录方法。它尝试打开上下文时失败 我的测试应用程序的设置方式几乎相同,没有问题 有什么想法吗 更新: 我尝试添加MultipleActiveResultSets=True,现在出现以下错误: 基础提供程序在打开时失败 更新2: 事实证明

我想知道是否有其他人对从全局asax运行DB初始值设定项有问题

我在ApplicationStart中有以下内容:

 Database.SetInitializer(new MyInitializer());
这运行正常,在应用程序启动之后,我尝试在服务中创建的登录方法。它尝试打开上下文时失败

我的测试应用程序的设置方式几乎相同,没有问题

有什么想法吗

更新: 我尝试添加MultipleActiveResultSets=True,现在出现以下错误: 基础提供程序在打开时失败

更新2:
事实证明,我的应用程序是在初始化程序仍在完成时加载的。这就是为什么我会犯这些错误。所以,我发现应用程序的一部分会加载,然后它必须从数据库请求一些东西,在这个点上它创建了数据库并对其进行种子。此时,应用程序的一部分已加载,但您不知道初始值设定项仍在运行。

就像我在更新中所说的那样,直到大部分应用程序已经运行之后,才创建DB。它仍然在运行,即使作为一个用户,你不会知道它。所以我创建了一个初始化项目并添加了这个类:

public static class InitializeAndSeed
    {
        public static void Initialize()
        {
            Database.SetInitializer(new MyContextInitializer());

            using (var db = new MyContext())
            {
                db.Database.Initialize(false);
            }
        }
    }
在我的应用程序中,我称为InitializeAndSeed.Initialize。工作得很好


帮助我解决了这个问题。

您能定义MyInitializer类吗?我稍后会给出代码,但我发现初始化DB太晚是个问题。