c# - Delete and recreate database using EntityFramework -


we using ef 6 , integration tests want remove our database, , recreate using database context.

we try exclusive use of database, getting database in use errror. tried:

    private void createdatabase()     {         mydbcontext context = new mydbcontext();         sqlconnection sqlconnection = context.database.connection sqlconnection;          lockdb(sqlconnection);         context.database.delete();         context.database.createifnotexists();         unlockdb(sqlconnection);         _context = context;     }      private void lockdb(sqlconnection connection)     {         const string cmdtext =              "use[master];"             + "if exists(select * sys.databases name = 'mydb')"             + "begin"             + "  alter database[mydb] set single_user rollback immediate;"             + "end;";          openconnection(connection);         executecommand(connection, cmdtext);     } 

what missing?

well wasn't 1 problem found answer here (on stack ofcourse)

the trick delete database in single sql statement

    private void deletedb(sqlconnection connection)     {         const string cmdtext =              "use[master];"             + "if exists(select * sys.databases name = 'tor')"             + "begin"             + "  alter database[tor] set single_user rollback immediate;"             + "  drop database [tor];"             + "end;";          openconnection(connection);         executecommand(connection, cmdtext);     } 

update

well above not bullet proof.

now using:

    private void createdatabase()     {         tordbcontext context = new tordbcontext();         context.database.delete();         context.database.create();         _context = context;     } 

works long not have queries open in management studio. not bother our integration tests...


Comments