The context cannot be used while the model is being created. dbContext is being used somewhere else? c# dbcontext entity-framework


I'm utilizing Identity2 and EF6. This is the error I'm experiencing:

{"The context cannot be used while the model is being created. This exception may be thrown if the context is used inside the OnModelCreating method or if the same context instance is accessed by multiple threads concurrently. Note that instance members of DbContext and related classes are not guaranteed to be thread safe."}

I too examined this code, but I was unable to understand:

ASP.NET Identity exception: "Context cannot be utilized while the model is being built"

my code is as follows:


namespace IdentitySample {
public partial class Startup {
    // For more information on configuring authentication, please visit
    public void ConfigureAuth(IAppBuilder app) {
        // Configure the db context, user manager and role manager to use a single instance per request

        // Enable the application to use a cookie to store information for the signed in user
        // and to use a cookie to temporarily store information about a user logging in with a third party login provider
        // Configure the sign in cookie
        app.UseCookieAuthentication(new CookieAuthenticationOptions {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/account/login"),
            Provider = new CookieAuthenticationProvider {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))

        // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
        app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));

        // Enables the application to remember the second login verification factor such as phone or email.
        // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
        // This is similar to the RememberMe option when you log in.

        // Uncomment the following lines to enable logging in with third party login providers
        //    clientId: "",
        //    clientSecret: "");

        //   consumerKey: "",
        //   consumerSecret: "");

        //   appId: "",
        //   appSecret: "");



My database initializer is here:

        public override void InitializeDatabase(ApplicationDbContext context)
        if (!context.Database.Exists())
            // If database did not exist before, create it
            // Query to check if MigrationHistory table is present in the database 
            var migrationHistoryTableExists = 
              "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' " 
                + "AND table_name = '__MigrationHistory'",

            // If MigrationHistory table is not there (which is the case first time we run), create it
            if (migrationHistoryTableExists.FirstOrDefault() == 0)
                if (settings.RecreateDatabase)



    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
        Database.SetInitializer<ApplicationDbContext>(new MySqlInitializer());

    static ApplicationDbContext()
        // Set the database intializer which is run once during application start
        // This seeds the database with admin user credentials and admin role
        Database.SetInitializer<ApplicationDbContext>(new MySqlInitializer());

    public static ApplicationDbContext Create()
        return new ApplicationDbContext();

    public DbSet<Person> People { get; set; }
5/23/2017 12:14:56 PM

Accepted Answer

5/25/2014 12:33:38 AM

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow