Diseñando un sistema
He aprendido diversas formas de desarrollar un sistema, con esa experiencia los míos han ido evolucionando, de tal forma que, estoy buscando aplicar:
- Principios SOLID
- Patrones de diseño
- Patrones de arquitectura
Actualmente estoy refactorizando un sistema interesante, aunque de momento no muy grande.
Lo primero es que estoy convirtiéndolo en un sistema "multitenant" (multi-arrendatario) para que diferentes usuarios de diversas organizaciones cliente puedan utilizarlo sin mezclarse.
Lo que sí es que busco la ley del menor esfuerzo (para enfocarme en elementos más productivos). Dicho esto comenzaré por exponer que:
- Defino un conjunto de clases base para que todas mis entidades hereden de ellas, así me ahorro re-escribir propiedades, cometer errores de nombres en propiedades, tener que repetir ajustes en varias partes si algun cambio tiene que afectar a grupos o a todas las entidades. Estas clases base tienen diferentes características de acuerdo con el objetivo que van a cumplir estas y sus herederas.
- En cada entidad que por BD se relaciona con muchas tuplas defino una colección virtual ICollection del tipo que será dependiente y le asigno al momento un valor NULL.
- En cada entidad dependiente agrego una propiedad del tipo de entidad que será de quien dependa, y le asigno un valor de NULL.
¿Qué tan sencillo sería agregar nuevas propiedades y campos a la BD de esta forma? ¿Qué tan sencillo sería asegurarse que la información se conserva íntegra?
- EntityFrameworkCore\Add-Migration NotaEvolutiva_001 -Context HistoriaClinicaDbContext para generar una nueva migración especificando que utilizaré Entity Framework Core y un contexto de datos específico (porque en este proyecto tengo varios contextos)
- EntityFrameworkCore\Update-Database -Context HistoriaClinicaDbContext para actualizar la base de datos especificando que utilizaré Entity Framework Core y un contexto de datos específico (porque en este proyecto tengo varios contextos)
Comentarios
Publicar un comentario