Is there a command to check to see if a database exists from Entity Framework?

database entity-framework


I may have worded the question poorly but in my global.asx file i use

 if (System.Diagnostics.Debugger.IsAttached)
            var test = new TestDbSeeder(App_Start.NinjectWebCommon.UcxDbContext);

This checks to see if the debugger is attached and runs my test seeder so that my acceptance tests always pass.

I need to check to see if the database exists as well and if not run this code first:

  var test2 = new DataSeeder();

This dataseeder is the actual data that has to always be in the database. Is there a command to check if the database exists so that I can run that code block. Thanks!

11/2/2012 4:01:35 PM

Accepted Answer

Will the Database.Exists method work for you?

if (!dbContext.Database.Exists())

Edit #1 to answer comment

public class DatabaseBootstrapper
    private readonly MyContext context;

    public DatabaseBootstrapper(MyContext context)
        this.context = context;

    public void Configure()
        if (context.Database.Exists())

        var seeder = new Seeder(context);

That should do exactly what you want. In your global.asax file...

public void Application_Start()
    var context = ...; // get your context somehow.
    new DatabaseBootstrapper(context).Configure();
11/2/2012 4:21:40 PM

Popular Answer

In Entity Framework Core it works like this:

namespace Database
    using Microsoft.EntityFrameworkCore.Infrastructure;
    using Microsoft.EntityFrameworkCore.Storage;

    public partial class MyContextClass
        /// <summary>
        /// Checks if database exists
        /// </summary>
        /// <returns></returns>
        public bool Exists()
            return (this.Database.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists();

Make sure the class name equals your database Context class name and is in the same namespace.

Use it like this:

var dbExists = (MyContextClass)db.Exists()

Source: StackOverflow Answer

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