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

后端 未结 2 1523
天涯浪人
天涯浪人 2020-12-20 15:23

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

 if (System.Diagnostics.Debugger.IsAttached)
        {
            var test = new Test         


        
相关标签:
2条回答
  • 2020-12-20 15:27

    Will the Database.Exists method work for you?

    if (!dbContext.Database.Exists())
        dbContext.Database.Create();
    

    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())
                return;
    
            context.Database.Create();
            var seeder = new Seeder(context);
            seeder.SeedDatabase();
        }
    }
    

    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();
    }
    
    0 讨论(0)
  • 2020-12-20 15:49

    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

    0 讨论(0)
提交回复
热议问题