Con el código de la agenda:
https://github.com/juanpablofuentes/Pasiona/tree/master/Ejemplos01/AgendaTelefonos
Pensad en qué pruebas unitarias podemos hacer para comprobar el funcionamiento.
Con el código de la agenda:
https://github.com/juanpablofuentes/Pasiona/tree/master/Ejemplos01/AgendaTelefonos
Pensad en qué pruebas unitarias podemos hacer para comprobar el funcionamiento.
Recuperamos el proyecto de números complejos que hicimos aquí:
Y vamos a añadir test unitarios sobre las funciones sumar, multiplicar e igual. Dejo a vuestra elección si es un ‘Fact’ o un ‘Theory’
https://es.wikipedia.org/wiki/Prueba_unitaria
TDD: Todo lo que necesitas saber de esta metodología en 3 minutos
https://xunit.net/docs/getting-started/netfx/visual-studio
https://docs.microsoft.com/es-es/dotnet/core/testing/unit-testing-best-practices
https://docs.microsoft.com/es-es/dotnet/core/testing/unit-testing-with-dotnet-test
https://www.entityframeworktutorial.net/efcore/pmc-commands-for-ef-core-migration.aspx
https://docs.microsoft.com/es-es/ef/core/cli/powershell
Get-Help entityframework | Displays information about entity framework commands. |
Add-Migration <migration name> | Creates a migration by adding a migration snapshot. |
Remove-Migration | Removes the last migration snapshot. |
Update-Database | Updates the database schema based on the last migration snapshot. |
Script-Migration | Generates a SQL script using all the migration snapshots. |
Scaffold-DbContext | Generates a DbContext and entity type classes for a specified database. This is called reverse engineering. |
Get-DbContext | Gets information about a DbContext type. |
Drop-Database | Drops the database. |
Usar I en nombres de Interfaces
https://www.eiximenis.dev/posts/2022-07-04-prefijo-i-en-las-interfaces-si-o-no/
SOLID en C#
https://steven-giesel.com/blogPost/a252f2da-1ae8-4449-9b5f-43657308eabb
Clases abstractas vs Interfaces
https://steven-giesel.com/blogPost/3992a289-4cc9-460c-b484-0cc137cccafa
Entity Framework Core usa un conjunto de convenciones para compilar un modelo basado en la forma de las clases de entidad. Puede especificar una configuración adicional para complementar o reemplazar lo que se ha detectado por convención.
Vamos a crear una aplicación para hacer un catálogo de una colección de comics. Las entidades son las siguientes:
Categorias: Nombre y descripción
Autores: Nombre, nacionalidad y año de nacimiento
Comics: Título, descripción, fecha y número de páginas
Una categoría puede tener varios cómics pero un cómic sólo pertenece a una categoría
Un autor lo puede ser de varios comics y viceversa. Los autores pueden tener diferentes roles para cada cómic (guionista, dibujante, entintador,…)
Tenemos que hacer:
1) Modelo ER.
2) Crear una aplicación de consola que implemente (Code First) este modelo.
3) En esa misma aplicación poder hacer un mantenimiento CRUD de las tres tablas. Incluyendo asignar autores a comics. Las asignaciones se harán por el id.
Ejemplo. El programa nos mostrará lo siguiente:
1) Añadir categoría
2) Ver categorías
3) Modificar categoría
4) Borrar categoría
Si pulsamos 1:
Introduzca el nombre de la categoría:
Introduzca la descripción:
Categoría creada con id:
Si pulsamos el 2:
Id Nombre Descripción
1 Manga Comic japonés
2 Novela gráfica
Si ponemos el 3:
Introduzca el id a modificar:
Introduzca nuevo nombre (intro para no modificar):
Introduzca nueva descripción (intro para no modificar):
Si ponemos el 4:
introduzca el id a eliminar:
Borrará la categoría XXX ¿Está seguro?
4) Modificar las asignaciones para incluir también búsqueda por nombre.
5) Crear una opción de estadísticas que nos permita ver:
a) El número de cómics por categoría
b) el número de cómics por autor
c) Los 5 cómics con mayor número de páginas.
d) el número de autores por nacionalidad.
Añadir la entidad Editorial
Tiene las propiedades nombre y país
Un comic es de una editorial y una editorial puede tener varios comics.
Añadir el CRUD de la editorial y los cambios que sean necesarios en comic para tener en cuenta la editorial.
En nuestra entidad profesor vamos a poner el nombre requerido, con una longitud mínima de 5 y máxima de 150.
Vamos a añadir un campo en curso Horas que son los créditos * 5 y no lo vamos a mapear con la base de datos
Vamos a añadir una entidad ‘Tarjeta’ con los campos IdTarjeta y Codigo (String) el codigo tiene un tamaño entre 10 y 20 y es requerido.
install-package Microsoft.EntityFrameworkCore
install-package Microsoft.EntityFrameworkCore.SqlServer
install-package Microsoft.EntityFrameworkCore.tools
Scaffold-DbContext “Server=.\SQLExpress;Database=pasiona;Trusted_Connection=True;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models