Contenido de diplomado
1
Módulo 1: Introducción a Entity Framework Core
Lección 2: Utilizando EF Core en aplicaciones con acceso a datos
Contenido
Instalando Entity Framework Core
Instalando las herramientas de Entity Framework Core
Desarrollo de aplicaciones .NET Framework con EF Core
Desarrollo de aplicaciones .NET Framework con EF Core - Introducción a las migraciones
Desarrollo de aplicaciones .NET Framework con EF Core - Crear migraciones
Desarrollo de aplicaciones .NET Framework con EF Core - ASP.NET MVC
Desarrollo de aplicaciones .NET Framework con EF Core - ASP.NET MVC Operaciones CRUD
Desarrollo de aplicaciones .NET Framework con EF Core - WPF
Desarrollo de aplicaciones .NET Framework con EF Core - WPF Operaciones CRUD
Desarrollo de aplicaciones .NET Framework con EF Core - Database-First.
Desarrollo de aplicaciones .NET Framework con EF Core - Database-First, Scaffolding.
Desarrollo de aplicaciones .NET Core con EF Core
Desarrollo de aplicaciones ASP.NET Core con EF Core
Desarrollo de aplicaciones UWP con EF Core
Desarrollo de aplicaciones UWP con EF Core - Utilizar el modelo
Desarrollo de aplicaciones Xamarin con EF Core
Desarrollo de aplicaciones Xamarin con EF - Migraciones, DependencyService.
Desarrollo de aplicaciones Xamarin con EF - DependencyService
Desarrollo de aplicaciones Xamarin con EF Core - Utilizar el modelo
Desarrollo de aplicaciones Xamarin con EF - Ejecutar en iOS y UWP
Trabajando con cadenas de conexión
Trabajando con cadenas de conexión - ASP.NET Core
2
Módulo 2: Creando y configurando un Modelo de datos
Lección 1: Creación de un modelo
Contenido
Configurando un contexto de datos
Estrategias para crear y configurar un modelo
Incluyendo y excluyendo clases entidad
Incluyendo y excluyendo propiedades
Llave primaria
Valores generados para las propiedades
Ejercicio de repaso
Propiedades requeridas y opcionales
Longitud máxima
Tokens de Concurrencia
Marca de tiempo - Timestamp
Propiedades sombra (Shadow properties)
Propiedades sombra (Shadow properties) - Convenciones y API Fluida
Relaciones
Relaciones - Por Convención
Relaciones - Anotaciones de datos
Relaciones - API Fluida
Relaciones - API Fluida - Llave foránea compuesta
Relaciones - API Fluida - Llave principal
Relaciones - Uno a uno
Relaciones - Muchos a muchos
Indices
Llaves alternas
Herencia
Campos de Respaldo (Backing Fields)
Campos de Respaldo (Backing Fields) - API Fluida
Campos de Respaldo (Backing Fields) - Campos sin propiedades
Conversiones de valores
Conversiones de valores - La clase ValueConverter
Tipos entidad con constructores
Tipos entidad con constructores - Propiedades de solo lectura
Tipos entidad con constructores- Inyección de servicios
Tipos de Entidad en Propiedad (Owned Entity Types)
Tipos de Entidad en Propiedad - Compartiendo el mismo tipo adueñado
Tipos de Entidad en Propiedad - Tipos adueñados anidados
Tipos de consulta- Comparando tipos de Consulta con tipos de Entidad
Tipos de consulta - Mapeo de objetos de la base de datos
Alternando entre múltiples modelos con el mismo tipo DbContext
Datos Espaciales
Sembrado de Datos (Data Seeding)
Sembrado de Datos - Propiedades adueñadas (Owned Entity types)
Sembrado de Datos - Personalización manual de la migración
Lección 2: Modelado de bases de datos relacionales
Contenido
Mapeo de Tablas
Mapeo de columnas
Tipos de datos
Claves principales
Esquema predeterminado (Default Schema)
Columnas calculadas
Valores Predeterminados
Secuencias
Índices
Restricciones de Llave Foránea
Llaves Alternas (Restricción Unique)
Herencia
Herencia - Configurando la propiedad Discriminator
Lección 3: Arquitectura N-Capas y patrones de diseño.
Contenido
Crear la estructura de la solución
Implementar la capa de Entidades
Implementar la capa de Servicios del Dominio
Implementar la capa de herramientas apoyo
Implementar la capa de acceso a datos
Implementar la capa de acceso a datos - Repository
Implementar la capa de acceso a datos - Factory Method
Implementar la Capa de Lógica de Negocios
Implementar la capa de presentación Web
Implementar la capa de presentación Web - Registro de Servicios
Implementar la capa de presentación WPF
Implementar la capa de presentación WPF - Implementando los manejadores de evento
Crear la base de datos
Probar la aplicación ASP.NET Core
Probar la aplicación Windows Presentation Foundation
Ejercicio de evaluación de conocimientos
3
Módulo 3: Sincronizando el esquema de la base de datos con el Modelo
Lección 1: Migraciones
Contenido
Instalar las herramientas de Entity Framework Core
Crear una migración
Personalizar el código de migración
Eliminar una migración
Generar Scripts SQL
Aplicar migraciones en tiempo de ejecución
Ambientes de equipos de desarrollo
Operaciones personalizadas - metodos de extensión
Operaciones personalizadas - Probando Migration Builder extensions
Operaciones personalizadas - Utilizando MigrationOperation
Operaciones personalizadas - Probando MigrationOperation
Utilizando proyectos independientes
Múltiples proveedores
Tabla de historial de migraciones personalizada
APIs Create y Drop
Creación del DbContext en tiempo de diseño - Servicios de aplicación
Creación del DbContext en tiempo de diseño - Usando un constructor sin parámetros y Fabrica desde tiempo de diseño
Lección 2: Ingeniería Inversa
Contenido
¿Cómo funciona la ingeniería inversa?
Instalación de las herramientas
El Comando Scaffold-DbContext
El Comando Scaffold-DbContext - Conservación de nombres, Fluent API y Anotaciones de Datos
El Comando Scaffold-DbContext - Nombre del DbContext, Directorios y espacios de nombres
Personalizar el modelo
Pluralización en Entity Framework Core
4
Módulo 4: Realizando operaciones de Inserción, Modificación y Eliminación de datos
Lección 1: Operaciones básicas
Contenido
Logging
Logging - Filtrando la información registrada
Logging - Creando un proveedor personalizado
Logging - Implementando el método Log
Logging - Registro del proveedor de logging
Agregando datos
Actualizando datos
Especificando valores para propiedades generadas
Especificando valores para propiedades generadas - Valores explícitos en columnas Identity de SQL Server
Especificando valores para propiedades generadas - Especificando valores explícitos durante una modificación
Eliminando datos
Múltiples operaciones en una sola llamada a SaveChanges
Agregando datos relacionados
Modificando relaciones
Eliminando relaciones
Eliminación en cascada
Eliminación en cascada - Creando código de apoyo para ejemplos
Eliminación en cascada - Creando el código para ejemplificar comportamientos de eliminación
Eliminación en cascada - Ejemplificando comportamientos de eliminación
Eliminación en cascada - Eliminación de entidades huérfanas
Lección 2: Conflictos de concurrencia y manejo de transacciones
Contenido
Control de concurrencia en Entity Framework Core
Control de concurrencia en Entity Framework Core - ¿Cómo trabaja el control de concurrencia en EF Core?
Resolviendo conflictos de concurrencia
Resolviendo conflictos de concurrencia - Utilizar DbUpdateConcurrencyException.Entries
Transacciones en Entity Framework Core
Transacciones entre contextos
Compartir transacción y conexión
Utilizando instancias DbTransaction externas
Utilizando System.Transactions
Utilizando System.Transactions - CommittableTransaction
Resiliencia de una conexión
Lección 3: Operaciones asíncronas y desconectadas
Contenido
Guardando datos de forma asíncrona
Entidades desconectadas
Guardando una sola entidad desconectada
Eliminar una entidad desconectada
Trabajando con grafos de entidades desconectadas
Grafos con entidades no existentes en la base de datos
Grafos con entidades existentes en la base de datos
Grafos con entidades existentes y no existentes en la base de datos
Operaciones sobre Grafos desconectados
Operaciones sobre Grafos desconectados - Entry, Add , Update, Remove
API TrackGraph
Crear un repositorio genérico
Crear un repositorio genérico - Modificando la Interface INorthWindRepository
Crear un repositorio genérico - Modificando la clase CategoryOperations
5
Módulo 5: Realizando consultas de datos
Lección 1: Realizando consultas con LINQ
Contenido
¿Cómo trabajan las consultas?
Realizando consultas básicas
Realizando consultas básicas - Obteniendo una entidad
Cargando datos relacionados con el patrón Eager loading
Cargando datos relacionados con el patrón Eager loading - Incluyendo múltiples niveles
Cargando datos relacionados con el patrón Eager loading - Múltiples niveles y múltiples raíces
Cargando datos relacionados con el patrón Eager loading - Inclusión en tipos derivados
Cargando datos relacionados con el patrón Eager loading -Inclusiones ignoradas
Cargando datos relacionados con el patrón Explicit loading
Cargando datos relacionados con el patrón Explicit loading - Consultando entidades relacionadas
Cargando datos relacionados con el patrón Lazy loading
Cargando datos relacionados con el patrón Lazy loading - Lazy loading sin proxies
Cargando datos relacionados con el patrón Lazy loading - Datos relacionados y la Serialización
Evaluación en el cliente contra evaluación en el servidor
Consultas con seguimiento contra consultas sin seguimiento
Consultas asíncronas
Filtros de consulta global (Global Query Filters)
Etiquetas de consulta (Query tags)
Lección 2: Consultas SQL sin formato
Contenido
Consultas básicas
Paso de parámetros
Formando consultas Raw SQL con LINQ
Seguimiento de cambios
Incluyendo datos relacionados
ExecuteSqlCommand
Realizando Operaciones ADO.NET
Realizando Operaciones ADO.NET - Obteniendo tipos anónimos
Realizando Operaciones ADO.NET - Utilizando DataTable
Trabajando con procedimientos almacenados
El patrón Query Object
El patrón Query Object - Crear el objeto de consulta (Query Object)
El patrón Query Object - Crear un tipo para manejar la consulta (Query Handler Type)
El patrón Query Object - Consumir el Manejador de la Consulta (Query Handler)
El patrón Query Object - Consumir el Manejador de la Consulta (Query Handler) otros ejemplos
El patrón Query Object - Consultas más legibles con el patrón Query Object
El patrón Query Object - Extendiendo IQueryable
Ejercicio de evaluación de conocimientos