Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de la versión 4 de .NET Framework, Entity Framework admite el lenguaje de definición de datos (DDL). Esto le permite crear o eliminar una instancia de base de datos basada en la cadena de conexión y los metadatos del modelo de almacenamiento (SSDL).
Los siguientes métodos en el ObjectContext usan la cadena de conexión y el contenido de SSDL para realizar lo siguiente: crear o eliminar la base de datos, comprobar si la base de datos existe y ver el script DDL generado.
Nota:
La ejecución de los comandos DDL supone permisos suficientes.
Los métodos enumerados anteriormente delegan la mayor parte del trabajo en el proveedor de datos ADO.NET subyacente. Es responsabilidad del proveedor asegurarse de que la convención de nomenclatura utilizada para generar objetos de base de datos es coherente con las convenciones usadas para realizar consultas y actualizaciones.
En el ejemplo siguiente se muestra cómo generar la base de datos en función del modelo existente. También agrega un nuevo objeto de entidad al contexto del objeto y, a continuación, lo guarda en la base de datos.
Procedimientos
Para definir una base de datos basada en el modelo existente
Crear una aplicación de consola.
Agregue un modelo existente a la aplicación.
- Agregue un modelo vacío denominado
SchoolModel
. Para crear un modelo vacío, consulte el tema How to: Create a New .edmx File (Cómo: Crear un archivo .edmx).
El archivo SchoolModel.edmx se agrega al proyecto.
Copie el contenido conceptual, el almacenamiento y el mapeo del modelo escolar del tema School Model.
Abra el archivo SchoolModel.edmx y pegue el contenido dentro de las
edmx:Runtime
etiquetas.
- Agregue un modelo vacío denominado
Agregue el código siguiente a la función principal. El código inicializa la cadena de conexión en el servidor de bases de datos, ve el script DDL, crea la base de datos, agrega una nueva entidad al contexto y guarda los cambios en la base de datos.
// Initialize the connection string. String connectionString = "..."; using (SchoolEntities context = new SchoolEntities(connectionString)) { try { if (context.DatabaseExists()) { // Make sure the database instance is closed. context.DeleteDatabase(); } // View the database creation script. Console.WriteLine(context.CreateDatabaseScript()); // Create the new database instance based on the storage (SSDL) section // of the .edmx file. context.CreateDatabase(); // The following code adds a new objects to the context // and saves the changes to the database. Department dpt = new Department { Name = "Engineering", Budget = 350000.00M, StartDate = DateTime.Now }; context.Departments.AddObject(dpt); // An entity has a temporary key // until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary); context.SaveChanges(); // The object was saved and the key // is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary); } catch (InvalidOperationException ex) { Console.WriteLine(ex.InnerException.Message); } catch (NotSupportedException ex) { Console.WriteLine(ex.InnerException.Message); } }
' Initialize the connection string. Dim connectionString As String = "metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=System.Data.SqlClient;" & "provider connection string=""Data Source=.;Initial Catalog=School;Integrated Security=True;MultipleActiveResultSets=True""" Using context As New SchoolEntities(connectionString) Try If context.DatabaseExists() Then ' Make sure the database instance is closed. context.DeleteDatabase() End If ' View the database creation script. Console.WriteLine(context.CreateDatabaseScript()) ' Create the new database instance based on the storage (SSDL) section ' of the .edmx file. context.CreateDatabase() ' The following code adds a new objects to the context ' and saves the changes to the database. Dim dpt As New Department() context.Departments.AddObject(dpt) ' An entity has a temporary key ' until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary) context.SaveChanges() ' The object was saved and the key ' is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary) Catch ex As InvalidOperationException Console.WriteLine(ex.InnerException.Message) Catch ex As NotSupportedException Console.WriteLine(ex.InnerException.Message) End Try End Using