Entity Framework - Multiple DbContext
En este capitulo, aprenderemos como migrar cambios a la base de data cuando hay multiples classs DbContext en el 'solicitud.
- Varios DbContext se introdujeron por primera vez en Entity Framework 6.0.
- Varias classs de contexto pueden pertenecer a una sola base de data oa dos bases de data diferentes.
En nuestro ejemplo, definiremos dos classs de contexto para la misma base de data. En el siguiente codigo, hay dos classs de DbContext para Student y Teacher.
estudiante de class publica {ID publico int {get; juntos; } cadena publica Apellido {get; juntos; } cadena publica FirstMidName {get; juntos; } Public DateTime EnrollmentDate {get; juntos; }} class publica MyStudentContext: DbContext {publico MyStudentContext (): base ( "UniContextDB ") {} publicoVirtual DbSet Students {get; juntos; }} Profesor de class publica {ID public int {get; juntos; } cadena publica Apellido {get; juntos; } cadena publica FirstMidName {get; juntos; } Public DateTime HireDate {get; juntos; }} public class MyTeacherContext: DbContext {public MyTeacherContext (): base ( "UniContextDB ") {} Public virtual DbSet Profesores {get; juntos; }}
Como puede ver en el codigo anterior, hay dos modelos llamados "alumno" y "profesor". Cada uno esta asociado con una class de contexto correspondiente en particular, es decir, el estudiante esta asociado con MyStudentContext y el profesor esta asociado con MyTeacherContext.
Esta es la regla general para migrar cambios a la base de data, cuando hay varias classs de contexto en el mismo proyecto.
-
enable-migrations -ContextTypeName MigrationsDirectory:
-
Add-Migration -configuration
-
Update-Database - configuration -Verbose
Habilite la migracion para MyStudentContext ejecutando el siguiente comando en la consola del administrador paquete.
PM → enable-migrations -ContextTypeName: EFCodeFirstDemo.MyStudentContext
Una vez ejecutado agregaremos el modelo en el historial de migracion y para eso tenemos que ejecutar el comando add -migracion en la misma consola.
PM → agregar-migracion -configuration EFCodeFirstDemo.Migrations.Configuration Initial
Ahora agreguemos algunos data a las tablas de Estudiantes y Maestros de la base de data.
static voidMain (string args) {using (var context = new MyStudentContext ()) {//// Crear y registrar una nueva consola de estudiante. WriteLine ( "Agregar nuevos estudiantes "); var student = new Student {FirstMidName = "Alain ", LastName = "Bomer ", EnrollmentDate = DateTime.Parse (DateTime.Today.ToString ()) // Edad = 24}; context.Students.Add (estudiante); var student1 = new Student {FirstMidName = "Mark ", LastName = "Upston ", EnrollmentDate = DateTime.Parse (DateTime.Today.ToString ()) // Edad = 30}; context.Students.Add (estudiante1); context.SaveChanges // muestra todos los estudiantes en la base de data var estudiantes = (de s en contexto. Los estudiantes ordenan por s.FirstMidName seleccione s) .ToList Console.WriteLine ( "Obtener todos los estudiantes de la base de data: "); foreach (var stdnt en estudiantes) {string name = stdnt.FirstMidName + "" + stdnt.LastName; Console.WriteLine ( "ID: {0}, nombre: {1} ", stdnt.ID, nombre); } Console.WriteLine ( "Presione cualquier tecla para salir ... "); Console.ReadKey } using (var context = new MyTeacherContext ()) {//// Crear y registrar una nueva consola de profesor. WriteLine ( "Anadiendo nuevos profesores "); var estudiante = nuevo profesor {FirstMidName = "Alain ", LastName = "Bomer ", HireDate = DateTime.P ass (DateTime.Today.ToString ()) // Edad = 24}; context.Teachers.Add (estudiante); var student1 = nuevo profesor {FirstMidName = "Mark ", LastName = "Upston ", HireDate = DateTime.Parse (DateTime.Today.ToString ()) // Edad = 30}; context.Teachers.Add (estudiante1); context.SaveChanges // Mostrar todos los profesores en la base de data var profesores = (de t en el contexto Orden de profesores por t.FirstMidName seleccione t) .ToList Console.WriteLine ( "Recuperar todos los profesores de la base de data: "); foreach (var profesor en profesores) {string name = teacher.FirstMidName + "" + teacher.LastName; Console.WriteLine ( "ID: {0}, nombre: {1} ", teacher.ID, nombre); } Console.WriteLine ( "Presione cualquier tecla para salir ... "); Console.ReadKey }}
Cuando se ejecuta el codigo anterior, vera que se crean dos tablas diferentes para dos modelos diferentes como se muestra en la siguiente imagen.
Le recomendamos que ejecute el ejemplo anterior paso a paso para una mejor comprension.
articulo>