Crear y quitar API

Los EnsureCreatedEnsureDeleted métodos y proporcionan una alternativa ligera a EnsureCreated para administrar el esquema de base de datos. Estos métodos son útiles en escenarios en los que los datos son transitorios y se pueden descartar cuando cambia el esquema. Por ejemplo, durante la creación de prototipos, en pruebas o para cachés locales.

Algunos proveedores (especialmente los no relacionales) no admiten migraciones. Para estos proveedores, suele EnsureCreated ser la manera más fácil de inicializar el esquema de base de datos.

Advertencia

EnsureCreated y las migraciones no funcionan bien juntos. Si usa Migraciones, no use para EnsureCreated inicializar el esquema.

La transición de EnsureCreated a migraciones no es una experiencia sin problemas. La manera más sencilla de hacerlo es quitar la base de datos y volver a crearla mediante migraciones. Si prevé usar migraciones en el futuro, es mejor empezar por Migraciones en lugar de usar EnsureCreated .

EnsureDeleted

El EnsureDeleted método quitará la base de datos si existe. Si no tiene los permisos adecuados, se produce una excepción.

// Drop the database if it exists
dbContext.Database.EnsureDeleted();

EnsureCreated

EnsureCreated creará la base de datos si no existe e inicializará el esquema de la base de datos. Si existe alguna tabla (incluidas las tablas de otra clase DbContext), el esquema no se inicializará.

// Create the database if it doesn't exist
dbContext.Database.EnsureCreated();

Sugerencia

También están disponibles versiones asincrónicas de estos métodos.

Secuencia de comandos de SQL

Para obtener el SQL que EnsureCreated usa , puede usar el método GenerateCreateScript.

var sql = dbContext.Database.GenerateCreateScript();

Varias clases DbContext

EnsureCreated solo funciona cuando no hay ninguna tabla en la base de datos. Si es necesario, puede escribir su propia comprobación para ver si es necesario inicializar el esquema y usar el servicio IRelationalDatabaseCreator subyacente para inicializar el esquema.

// TODO: Check whether the schema needs to be initialized

// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();