For EF6, I can check whether a database exists in the following way:
context.Database.Exists()
How can I do this in EF Core?
In creating a database you also need to check whether or not the database already exists. In order to do so, simply use the 'if exists' method and select the name of the database from sysdatabases.
Verify Databases. Once you have run the create database command, you can check if the databases are created or not by using the following command: db2 list db directory.
I have found the solution on my own:
(context.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists()
It works for EF 7.0.0-rc1-final version for SqlServer
UPDATE:
Entity Framework Core 2.0:
(context.Database.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists()
UPDATE .Net Core 3.1
To check if a database exists and can be contacted:
dbContext.Database.CanConnect()
The other solutions tell you whether the database is connectable:
context.Database.GetService<IRelationalDatabaseCreator>().Exists(); //true
context.Database.EnsureDeleted();
context.Database.GetService<IRelationalDatabaseCreator>().Exists(); //true
I want to know whether the database exists:
context.Database.GetService<IRelationalDatabaseCreator>().HasTables(); //true
context.Database.EnsureDeleted();
context.Database.GetService<IRelationalDatabaseCreator>().HasTables(); //false
Note this weird behavior:
context.Database.EnsureDeleted();
context.Database.GetService<IRelationalDatabaseCreator>().HasTables(); //false
context.Database.EnsureCreated();
context.Database.GetService<IRelationalDatabaseCreator>().HasTables(); //true
context.Database.EnsureDeleted();
context.Database.GetService<IRelationalDatabaseCreator>().HasTables(); //true !!
So it's not perfect, but depending on your use case it could be useful.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With