08 - API Portfolio - Base de Datos - Migrations y Snapshots - Entity Framewok

00:31:26
https://www.youtube.com/watch?v=mgKrwT5riGQ

Sintesi

TLDREn este video se cierra el tema de bases de datos en un proyecto de programación, enfatizando la importancia de la estructura de código y la interacción con el ORM. Se explica el proceso de migraciones, cómo se crean y se aplican a la base de datos. Se aconseja realizar cambios en métodos y mantener una buena práctica en la nomenclatura al trabajar con el repositorio. También se discute el manejo de errores y la importancia del snapshot como herramienta para regresar a estados anteriores si se producen problemas.

Punti di forza

  • 📊 La estructura de la aplicación es básica y carece de arquitectura avanzada.
  • 🔍 Las migraciones son esenciales para mantener la coherencia entre el código y la base de datos.
  • ⚙️ El ORM gestiona la comunicación y la actualización de la base de datos.
  • 📝 Es importante dar nombres significativos a las migraciones.
  • 💾 Un snapshot permite regresar a un estado anterior de la base de datos si es necesario.
  • 🚀 Los comandos 'add migration' y 'update database' son cruciales en el proceso de migración.
  • 🔄 Los cambios en el código deben reflejarse en la base de datos para evitar inconsistencias.
  • 🔎 El control de errores en migraciones asegura una buena práctica de desarrollo.

Linea temporale

  • 00:00:00 - 00:05:00

    El video trata sobre la finalización del tema de bases de datos en una aplicación. El presentador revisa la estructura del código, mencionando que la arquitectura no fue algo destacado durante la clase. Se explica la organización general del código y las diversas carpetas, incluyendo controllers y entidades, y cómo se relacionan con la base de datos.

  • 00:05:00 - 00:10:00

    Se profundiza en el rol de un ORM (Object-Relational Mapping) en la modificación de la base de datos. El ORM no solo facilita la comunicación entre la base de datos y los objetos de la aplicación, sino que también mantiene la base de datos actualizada según los cambios en el código. Se destaca la importancia de las entidades y el contexto en este proceso de actualización.

  • 00:10:00 - 00:15:00

    El presentador describe el proceso de usar comandos específicos en el ORM para implementar migraciones en la base de datos. Explica cómo crear migraciones significativas que describan los cambios en la estructura de la base de datos. Se menciona la necesidad de nombres descriptivos para las migraciones y cómo afectan la base de datos.

  • 00:15:00 - 00:20:00

    Se introduce el concepto de 'snapshot', que es una captura del estado actual de la base de datos, creando un punto de referencia que facilita regresar a estados anteriores si se producen errores durante las migraciones. El snapshot es crucial para los desarrolladores porque permite resolver problemas sin complicaciones mayores.

  • 00:20:00 - 00:25:00

    El video demuestra cómo realizar cambios en el código y sus implicaciones en la base de datos, enfatizando la necesidad de ejecutar los comandos de migración apropiados. Se menciona la relación entre los cambios en el código y el snapshot, y cómo la migración garantiza la coherencia entre ambos.

  • 00:25:00 - 00:31:26

    Finalmente, el presentador habla sobre la creación de nuevos métodos en un repositorio para interactuar con la base de datos. Se muestran ejemplos de cómo implementar métodos para buscar experiencias por título e ID, y se deja como tarea a los estudiantes optimizar y ajustar algunos fragmentos de código antes de la próxima clase.

Mostra di più

Mappa mentale

Video Domande e Risposte

  • ¿Qué es una migración en el contexto de bases de datos?

    Una migración es un archivo o clase autogenerada que contiene instrucciones para cambiar la base de datos según los cambios en el código.

  • ¿Qué función cumple el ORM en la base de datos?

    El ORM se encarga de la comunicación entre la base de datos y los objetos de la aplicación, manteniendo actualizada la base de datos según el código.

  • ¿Cómo se generan las migraciones?

    Las migraciones se generan mediante el comando 'add migration' en la consola y deben ser nombradas de manera significativa para reflejar los cambios realizados.

  • ¿Qué es un snapshot en el proceso de migración?

    Un snapshot es una captura del estado actual de la base de datos que refleja su estructura en un momento determinado.

  • ¿Qué comandos son necesarios para aplicar las migraciones?

    Se utiliza el comando 'update database' para impactar los cambios definidos en el set de instrucciones en la base de datos.

Visualizza altre sintesi video

Ottenete l'accesso immediato ai riassunti gratuiti dei video di YouTube grazie all'intelligenza artificiale!
Sottotitoli
es
Scorrimento automatico:
  • 00:00:00
    Cómo están chicos Bueno vamos a hoy
  • 00:00:03
    hablar un poco
  • 00:00:04
    sobre sobre digamos terminar un poco
  • 00:00:08
    sobre base de datos vamos a cerrar ese
  • 00:00:10
    tema Antes que nada quería igual que
  • 00:00:11
    revisemos un poquito lo que tenemos el
  • 00:00:13
    código que tenemos nosotros Simplemente
  • 00:00:15
    porque bueno había preguntaron ahí en el
  • 00:00:17
    comentario qué estructura qué
  • 00:00:18
    arquitectura se eligió la verdad que acá
  • 00:00:21
    no s digamos el proyecto en cuestión no
  • 00:00:24
    se destaca por arquitectura yo no tomé
  • 00:00:26
    decisiones ni tampoco dimos ese tema en
  • 00:00:28
    clase
  • 00:00:31
    y el código simplemente está más o menos
  • 00:00:32
    separado Yo acá antes del video moví la
  • 00:00:35
    carpeta entidad estaba fuera la
  • 00:00:37
    movimiento de Data y fíjense que me
  • 00:00:39
    verifique la que que el L space también
  • 00:00:42
    cambió moví esa carpeta de entidades que
  • 00:00:44
    estaba Suelta la moví dentro de la
  • 00:00:45
    carpeta Data así como venía pero
  • 00:00:49
    básicamente podemos decir que la
  • 00:00:50
    estructura de digamos la arquitectura
  • 00:00:52
    que tiene esta aplicación es poco y nada
  • 00:00:54
    o sea tenemos la carpeta controller que
  • 00:00:56
    se encarga de digamos de la
  • 00:00:58
    responsabilidad que tiene interacción
  • 00:01:00
    con el mundo exterior a través de la ric
  • 00:01:02
    y la responses eh que están definidas en
  • 00:01:05
    los controladores que acá pusimos una
  • 00:01:07
    serie de de endpoints no que tienen esas
  • 00:01:09
    r responses después tenemos la carpeta
  • 00:01:12
    de edita que se va a encargar de la
  • 00:01:13
    definición de La Estructura de datos y
  • 00:01:15
    la interacción con la base de datos la
  • 00:01:17
    definición de La Estructura de datos
  • 00:01:18
    está dispuesta en las entidades Y en
  • 00:01:21
    este caso hay una sola y la la clase que
  • 00:01:25
    se encarga de la interacción con la base
  • 00:01:26
    de datos es el repositorio ahora bien el
  • 00:01:29
    contexto es una clase que se encarga de
  • 00:01:31
    de digamos de pasar la información al al
  • 00:01:34
    orm de cómo debería entender los
  • 00:01:36
    estructur datos que nosotros definimos
  • 00:01:38
    en nuestra aplicación
  • 00:01:40
    eh Y la migration que tenemos acá es e
  • 00:01:44
    una Ya lo vamos a hablar un poco más
  • 00:01:45
    detenidamente Pero esto está generado
  • 00:01:47
    por comandos que se Ejecutan en consola
  • 00:01:50
    y que son utilizados por el orm para
  • 00:01:53
    digamos tratar de generar o
  • 00:01:55
    compatibilizar La Estructura de datos de
  • 00:01:57
    nuestra aplicación con la base de datos
  • 00:01:58
    relacional o ya que haya sido definida y
  • 00:02:02
    bueno los Mods es una carpeta sin
  • 00:02:03
    importancia que tiene clasecitas que
  • 00:02:05
    vamos necesitando sobre la marcha para
  • 00:02:08
    para pasar información de una capa a la
  • 00:02:09
    otra o recibirla desde afuera desde los
  • 00:02:12
    endpoint pero como les digo esta carpeta
  • 00:02:15
    tiene digamos datos que son poco
  • 00:02:17
    relevantes y que no se tienen en cuenta
  • 00:02:18
    a la hora de generar una base de datos y
  • 00:02:20
    demás acá van a ver el archivo de base
  • 00:02:22
    de datos que Se generó después de hacer
  • 00:02:24
    la migración y acá van a ver también el
  • 00:02:26
    program que bueno el archivo de digamos
  • 00:02:29
    de de sea se realizan dependencias y
  • 00:02:33
    demás las cosas de configuración ys el
  • 00:02:35
    programa es el archivo ejecutable inici
  • 00:02:37
    de inicial de la aplicación y bueno acá
  • 00:02:39
    se hacen muchas cosas Generalmente no es
  • 00:02:41
    un archivo para nada poco importante
  • 00:02:42
    pero ciertamente es algo que se toca con
  • 00:02:45
    menos frecuencia que el resto no Bueno e
  • 00:02:49
    esto es un repaso de lo que tenemos
  • 00:02:50
    hasta ahora y ahora bien Vamos a
  • 00:02:51
    detenernos un poquito y quiero que este
  • 00:02:53
    video voy un poco rápido porque quiero
  • 00:02:55
    que este video sea conciso porque el
  • 00:02:57
    video anterior Nos pasamos un poco de
  • 00:02:58
    tiempo e así que bueno en cuestión el el
  • 00:03:04
    orm para generar una
  • 00:03:08
    digamos para poder crear una base de
  • 00:03:10
    datos Y para poder modificarla si es que
  • 00:03:12
    se detecta un cambio en nuestro código
  • 00:03:13
    lo que hace es obviamente mirar nuestro
  • 00:03:15
    código Pero qué Mira Bueno mira las
  • 00:03:17
    entidades y el
  • 00:03:19
    contexto es decir quiero que entendamos
  • 00:03:21
    bien Esto el orm no solamente se encarga
  • 00:03:25
    de la comunicación entre la base de
  • 00:03:26
    datos y los objetos que ya vamos a ver
  • 00:03:28
    cómo lo hace sino que su vez también se
  • 00:03:30
    encarga de mantener actualizada la base
  • 00:03:32
    de datos en nuestro código en en digamos
  • 00:03:35
    a partir de nuestro código es decir mira
  • 00:03:37
    nuestro código y dice Okay cambio no sé
  • 00:03:40
    cambiamos la propiedad de el nombre de
  • 00:03:42
    una propiedad en vez de llamarse nombre
  • 00:03:43
    se llama name ahora Bueno por lo tanto
  • 00:03:45
    en la base de datos la columna de esa se
  • 00:03:47
    va a tener que llamar name de nombre
  • 00:03:50
    entonces la base de datos trata y hace
  • 00:03:53
    eso hace ese cambio digamos se modifica
  • 00:03:55
    en base a lo que el orm le dice el orm
  • 00:03:57
    dice Ah okay detecté un cambio en el
  • 00:03:58
    código vamos a cambiar también la base
  • 00:04:01
    de datos y la cambia siempre y cuando
  • 00:04:03
    corramos los comandos correctos Pero
  • 00:04:05
    dónde se mira el dónde Mira el orm para
  • 00:04:07
    decir Che cambió algo bueno Mira dos dos
  • 00:04:10
    cosas las entidades y el contexto
  • 00:04:12
    principalmente el contexto porque en el
  • 00:04:14
    contexto decimos nosotros qué clase son
  • 00:04:16
    las entidades de alguna manera eh
  • 00:04:18
    fíjense que en el contexto si yo voy al
  • 00:04:21
    contexto Yo acá definí que eh un dbc de
  • 00:04:25
    la entidad experience
  • 00:04:27
    eh va a estar digamos va a formar parte
  • 00:04:29
    del contexto por lo tanto de alguna
  • 00:04:31
    manera le estoy diciendo que mide que
  • 00:04:32
    reloje esta entidad y acá en esta
  • 00:04:34
    entidad definí que el ID por ejemplo es
  • 00:04:36
    autogenerado y que sea una clave
  • 00:04:38
    primaria Y eso tiene un impacto directo
  • 00:04:40
    en la base de datos porque esto Esto es
  • 00:04:43
    algo que se impacta en la base de datos
  • 00:04:44
    o sea el ID es una propiedad que va a
  • 00:04:47
    tener esas propiedades no una
  • 00:04:49
    redundancia no es una una columna de la
  • 00:04:52
    tabla que va a ser autogenerada por la
  • 00:04:54
    base de datos Y eso es porque yo se lo
  • 00:04:56
    pasé por código y eso se se hace
  • 00:04:58
    realidad Porque orm Mira la entidad a
  • 00:05:01
    través de la definición que se hace en
  • 00:05:03
    el contexto de que esa entidad es un DS
  • 00:05:05
    por lo tanto es algo que tiene que
  • 00:05:06
    observar tanto sea para la creación de
  • 00:05:09
    la base de datos como para la
  • 00:05:11
    mantenimiento actualizada de la base de
  • 00:05:13
    datos o sea cualquier cambio que hagamos
  • 00:05:15
    ahí va a tener un impacto en la base de
  • 00:05:17
    datos Cómo se logra ese impacto bueno
  • 00:05:18
    acá viene el segundo paso que fue lo que
  • 00:05:20
    hicimos al final del video de la clase
  • 00:05:22
    pasada para lograr si yo cambio
  • 00:05:24
    cualquier cosa en el código por sí solo
  • 00:05:26
    el orm no lo mira lo mira solo si
  • 00:05:28
    nosotros le pasamos a al unos dos
  • 00:05:30
    comandos en cuestión hay un comando que
  • 00:05:33
    es el ad
  • 00:05:35
    migration que como les dije lo hicimos
  • 00:05:37
    en la final de la clase pasada Así que
  • 00:05:39
    cualquier cosa miren en el video
  • 00:05:40
    anterior y este Comando ad migration lo
  • 00:05:42
    que hace es le tenemos que pasar acá un
  • 00:05:45
    nombre Sí el nombre de la migración que
  • 00:05:47
    tiene que ser un nombre significativo es
  • 00:05:49
    decir por ejemplo si yo cambié el nombre
  • 00:05:50
    de una columna le tenemos que decir
  • 00:05:53
    column name change tanto y el nombre de
  • 00:05:56
    la columna por ejemplo pero digamos no
  • 00:05:59
    supóngase que ustedes lo que hicieron
  • 00:06:01
    fue o sea les pidieron que agreguen que
  • 00:06:04
    agreguen una columna en una tabla que
  • 00:06:08
    sea nombre y que a su vez se filtre por
  • 00:06:10
    ese nombre Eh de menor a mayor y por no
  • 00:06:13
    sé analfabético que Y ustedes a su vez
  • 00:06:17
    dentro de ese cambio dentro de todo lo
  • 00:06:18
    que tuvieron que hacer tuvieron que
  • 00:06:19
    cambiar el nombre de la columna de Ne
  • 00:06:21
    nombre entonces en la migración no van a
  • 00:06:23
    poner Añadir columna de fila el nombre
  • 00:06:26
    de admiración No sé no es add colum to
  • 00:06:29
    list of columns No no es eh simplemente
  • 00:06:33
    o filter by name feature no tienen que
  • 00:06:37
    poner
  • 00:06:38
    eh
  • 00:06:40
    eh colum name
  • 00:06:43
    change algo así eh de esa manera porque
  • 00:06:46
    la migración tiene que ver
  • 00:06:47
    exclusivamente no con todos los otros
  • 00:06:49
    cambios que ustedes ya han hecho para
  • 00:06:50
    Añadir esa columna que se vea linda que
  • 00:06:52
    que que que que se pueda listar en el
  • 00:06:54
    Front y que s yo y todos los cambios que
  • 00:06:56
    hayan hecho circunstantes a eso sio
  • 00:06:59
    específicamente a los cambios que tengan
  • 00:07:01
    que ver con los cambios en la base de
  • 00:07:02
    datos o que impacten en un cambio de la
  • 00:07:04
    estructura de la base de datos por lo
  • 00:07:05
    tanto en la migración tiene como un
  • 00:07:07
    nombre relevante para esto Igualmente
  • 00:07:08
    como les digo esto el nombre es algo
  • 00:07:10
    obligatorio pero te pueden poner
  • 00:07:12
    cualquier salaz y bandar pero tengan
  • 00:07:15
    presente que bueno está bueno Ten un
  • 00:07:17
    código de calidad y el nombre la tiene
  • 00:07:19
    que tener un nombre representativo para
  • 00:07:20
    los cambios que Se realizaron en batos
  • 00:07:22
    bueno dicho esto e cuando se hace el ad
  • 00:07:26
    migration que yo le puse inial migration
  • 00:07:27
    creo suelo poner así la primera ad
  • 00:07:30
    migración porque la primera ad migración
  • 00:07:32
    a su vez crea algo que es el
  • 00:07:34
    snapshot
  • 00:07:36
    eh que ya vamos a habl un poco de Qué es
  • 00:07:38
    cada cosa pero bueno después de comer de
  • 00:07:40
    correr ese Comando se corre en la
  • 00:07:42
    database que es otro
  • 00:07:47
    Comando y este Comando lo que hace o sea
  • 00:07:49
    como les dije este Comando lo que genera
  • 00:07:51
    es una
  • 00:07:53
    migration que si se fijan la cuando me
  • 00:07:56
    refiero a migration me refiero a este
  • 00:07:57
    archivo de código este
  • 00:08:00
    acá este archivo de código que de hecho
  • 00:08:02
    es hereda una clase que se llama
  • 00:08:04
    migration que es una clase de entity
  • 00:08:05
    framework si se fijan acá del paquete de
  • 00:08:07
    Microsoft Core
  • 00:08:09
    e Y también si es la primera migración
  • 00:08:13
    se va a generar snapshot que ya vamos va
  • 00:08:14
    a hablar de esto aguanten un segundo
  • 00:08:16
    Entonces el database que lo escribí para
  • 00:08:19
    el duge esperen que lo acomodo
  • 00:08:30
    Dios mío estoy relco bien la database lo
  • 00:08:34
    que hace es generar
  • 00:08:38
    un digamos lo que hace es impactar la
  • 00:08:50
    migration en
  • 00:08:52
    la base de
  • 00:08:55
    datos Y esto es importante porque
  • 00:09:01
    de por si solo la migration no cambia la
  • 00:09:03
    base de datos simplemente genera un set
  • 00:09:06
    Qué es una
  • 00:09:09
    migration Qué es una migration Bueno una
  • 00:09:12
    migration es un
  • 00:09:13
    archivo una
  • 00:09:16
    clase
  • 00:09:20
    autogenerada a través del Comando es ad
  • 00:09:24
    migration que contiene un set de
  • 00:09:26
    instrucciones
  • 00:09:41
    e para cambiar la base de
  • 00:09:44
    datos ahora este ser de instrucciones no
  • 00:09:47
    es algo que nos importa o sea no es algo
  • 00:09:48
    para nosotros es para el entity
  • 00:09:50
    framework es quién va a interpretar ese
  • 00:09:52
    ser de instrucciones entity framework no
  • 00:09:55
    nosotros y cómo lo en qué momento lo va
  • 00:09:57
    a interpretar bueno el set instrucciones
  • 00:10:00
    lo interpreta en la
  • 00:10:03
    database la migration el Otro aspecto de
  • 00:10:07
    cómo sería la definición y Otro aspecto
  • 00:10:09
    es lo
  • 00:10:10
    usa
  • 00:10:12
    el update
  • 00:10:19
    database que es en en verdad no que lo
  • 00:10:23
    ejecuta este Comando lo usa la database
  • 00:10:26
    para impactar los cambios definidos en
  • 00:10:28
    ese set instrucción nuestra base de
  • 00:10:30
    datos lo interesante es y por eso la
  • 00:10:33
    primera vez es un poco digamos
  • 00:10:35
    desconcertante que digamos si es que no
  • 00:10:37
    hay base de datos la crea por lo tanto
  • 00:10:40
    lo que hace es decir bueno se
  • 00:10:45
    fija si la está si no está la crea y
  • 00:10:49
    impacta la migration en nuestra en
  • 00:10:53
    nuestraa de datos recién
  • 00:10:55
    cre hace como esas dos cosas normalmente
  • 00:10:59
    y la creación de B no es relevante
  • 00:11:01
    porque ya está creada normalmente Pero
  • 00:11:03
    pero bueno está bueno saberlo no que
  • 00:11:05
    cuando ustedes necesitan correr un
  • 00:11:06
    comando extra para crear la base de
  • 00:11:08
    datos eh simplemente y Y no y no está no
  • 00:11:11
    es recomendable crear la mano porque
  • 00:11:14
    digamos tiene que ser muy bien hecha
  • 00:11:16
    para que frengo se la reconozca como
  • 00:11:18
    propia lo más normal es que dejar que
  • 00:11:20
    entity frengo la cree sola no la cree
  • 00:11:23
    mano ustedes y corran El Comando porque
  • 00:11:25
    lo más probable es que cree otra aparte
  • 00:11:27
    porque no reconozca esa base de datos
  • 00:11:28
    como como como la que tiene que ser
  • 00:11:31
    e entonces y vamos a atarnos Entonces
  • 00:11:35
    ahora Qué es un snapshot porque lo
  • 00:11:36
    vieron por ahí el snapshot que es otro
  • 00:11:38
    de los archivos que se
  • 00:11:39
    genera snapshot para mí es el archivo
  • 00:11:42
    más Útil para los desarrolladores porque
  • 00:11:43
    la migration no es más que un set de
  • 00:11:44
    instrucciones que interpreta FR que se
  • 00:11:48
    genera en base a a cuando nosotros
  • 00:11:50
    hacemos un cambio en el código y
  • 00:11:53
    queremos que ese código ese cambio en el
  • 00:11:55
    código se vea reflejado en la base de
  • 00:11:57
    datos creamos nosotros una Migra
  • 00:11:59
    corremos El Comando mig para bueno
  • 00:12:02
    reflejar ese cambio que se va hacer en
  • 00:12:03
    la base de datos y después
  • 00:12:09
    corremos perdón se me cortó después
  • 00:12:11
    corremos el database para que se
  • 00:12:15
    impacten esos cambios Pero qué es
  • 00:12:17
    snapshot el snapshot es una captura de
  • 00:12:19
    pantalla no una captura una imagen
  • 00:12:26
    instantánea captura me refiero en
  • 00:12:29
    términos metafóricos No no es una imagen
  • 00:12:31
    pero
  • 00:12:35
    bueno de la base de
  • 00:12:40
    datos
  • 00:12:44
    reflejando la estructura que hoy en día
  • 00:12:55
    tiene es decir que si yo genero un una
  • 00:13:00
    migration lo más probable es que digamos
  • 00:13:03
    cuando yo gener una migration snapshot
  • 00:13:05
    cambia siempre o sea yo cuando hago el
  • 00:13:07
    ad migration se genera una migration con
  • 00:13:09
    el set de instrucciones de las cosas que
  • 00:13:10
    tienen que cambiar y por otro lado como
  • 00:13:13
    nuestra baseos cambió el snapshot cambia
  • 00:13:15
    lo interesante de ver esto es cuando
  • 00:13:17
    ustedes tienen un
  • 00:13:25
    snapshot el snapshot es único y la
  • 00:13:28
    migration
  • 00:13:29
    pueden ser
  • 00:13:31
    varias de hecho normalmente son decenas
  • 00:13:34
    de migration o sea todos los cambios
  • 00:13:37
    todas las migration que han habido o sea
  • 00:13:39
    todos los cambios que han habido en su
  • 00:13:41
    Estructura de datos a lo largo del
  • 00:13:42
    tiempo deting de la aplicación han ido
  • 00:13:44
    generando nueva migration lo interesante
  • 00:13:47
    de esto es que si yo por ejemplo me
  • 00:13:49
    equivoqué con una migration hice un
  • 00:13:50
    cambio que rompió la base de datos yo
  • 00:13:52
    puedo volver al Estado anterior puedo
  • 00:13:54
    decir Che me equivoqué con la tres
  • 00:13:56
    vuelvo a A como estaba la base de datos
  • 00:13:59
    con La migration número dos y nada es
  • 00:14:02
    bastante sencillo hacerlo no lo vamos a
  • 00:14:03
    ver ahora Nosotros ni mucho menos pero
  • 00:14:05
    bueno sepan que FR te da esa posibilidad
  • 00:14:07
    no de arreglar las macanas que uno va
  • 00:14:10
    haciendo vamos a pasarlo a código a esto
  • 00:14:12
    para que no se me mareen y me confundan
  • 00:14:15
    y se pongan mal no se preocupen no es
  • 00:14:17
    algo difícil por lo menos en el nivel de
  • 00:14:19
    complejidad que estamos manejando en
  • 00:14:21
    esta
  • 00:14:22
    aplicación supónganse que yo por ejemplo
  • 00:14:24
    en vez de image path quiero que esto se
  • 00:14:27
    llame
  • 00:14:29
    img
  • 00:14:30
    Paz Esto va a tener a un cambio en
  • 00:14:33
    nuestra base de datos Sí porque yo lo
  • 00:14:35
    que estoy haciendo acá es cambiar el
  • 00:14:38
    nombre de una propiedad cuando yo cambio
  • 00:14:40
    nombre a una propiedad esto tiene en lo
  • 00:14:43
    que hace para mantener la coherencia es
  • 00:14:45
    decir Bueno si esa propiedad obviamente
  • 00:14:47
    es de una entidad que corresponde a una
  • 00:14:49
    tabla en nuestra base de datos yo voy a
  • 00:14:52
    necesitar de hecho vamos a fijarnos
  • 00:14:53
    miren si yo voy a abrir nuestra base de
  • 00:14:55
    datos no entonces acá pongo file open
  • 00:14:58
    database si me busco el archivo por
  • 00:15:01
    folio ipi y me busco el archivo de base
  • 00:15:04
    de datos que tenemos acá si se fijan la
  • 00:15:06
    tabla experiencia tiene una columna que
  • 00:15:08
    es image path si yo cambio el nombre de
  • 00:15:11
    la propiedad de la entidad de image pa A
  • 00:15:15
    imgp lo que debería digamos hacer para
  • 00:15:18
    mantener una coherencia es cambiar
  • 00:15:20
    también la misma propiedad cambiarla en
  • 00:15:22
    la base de datos Entonces cuando Yo
  • 00:15:25
    corro El Comando ad migration en el
  • 00:15:27
    fondo El Comando ad migration No mira la
  • 00:15:30
    base de datos Mira el
  • 00:15:33
    snapshot es decir El Comando ad
  • 00:15:37
    migration
  • 00:15:38
    dice tengo este código de hecho vamos a
  • 00:15:41
    tratar de dibujarlo
  • 00:15:47
    esto el snapshot de nuestra si se fijan
  • 00:15:51
    vamos al snapshot rapidito a mostrar Qué
  • 00:15:53
    es lo que tiene verí con eso se entiende
  • 00:15:56
    eh en snapshot si se fijan Esto no se
  • 00:15:59
    suele mirar mucho no se mareen no se
  • 00:16:01
    preocupen es algo que mire entity
  • 00:16:02
    framework pero quiero que entendamos por
  • 00:16:04
    arriba lo que hay acá si se fijan Acá
  • 00:16:06
    está el nombre de nuestra
  • 00:16:09
    tabla y acá están todas las propiedades
  • 00:16:12
    tiene un ID tiene una descripción tiene
  • 00:16:14
    image path tiene State tiene summary
  • 00:16:17
    tiene title y listo y ya terminó no hay
  • 00:16:20
    mucho más que esto es la tablita que
  • 00:16:23
    tenemos y con sus propiedades es decir
  • 00:16:25
    el tiene toda la estructura de base de
  • 00:16:28
    naase en el momento dado Entonces cuando
  • 00:16:31
    ustedes Ejecutan un cambio en el código
  • 00:16:33
    y corren El Comando
  • 00:16:35
    migration lo que se hace es se mira el
  • 00:16:39
    estado que tiene
  • 00:16:43
    snapshot y si hace falta un cambio
  • 00:16:47
    Entonces se genera una migración con el
  • 00:16:51
    set de
  • 00:16:54
    instrucciones para cambiar la base de
  • 00:16:57
    datos
  • 00:17:02
    y automáticamente a su
  • 00:17:06
    vez esta se cambia se actualiza el
  • 00:17:09
    snapshot
  • 00:17:12
    también a eh digamos el estado después
  • 00:17:16
    de digamos de
  • 00:17:18
    de reflejando la migration que se hizo
  • 00:17:21
    reflejando las instrucciones que eh yo
  • 00:17:24
    voy a a ejecutar pero todavía nos
  • 00:17:27
    impactó cuando y impacto cuando yo hago
  • 00:17:30
    una database Lo que
  • 00:17:32
    sucede es que este cambio como que el
  • 00:17:35
    paso 3 podríamos decir que este es el
  • 00:17:38
    paso
  • 00:17:39
    un y esto sucede todo junto o
  • 00:17:44
    sea esto que está acá sucede todo junto
  • 00:17:47
    o sea se genera una migration y se
  • 00:17:48
    cambia snapshot el paso dos es el
  • 00:17:51
    database yabe impacta en nuestra base de
  • 00:17:56
    datos el cambio Sons pas los dos
  • 00:17:59
    momentos no esto es el ad migration el
  • 00:18:02
    paso un de hecho se lo vamos a poner por
  • 00:18:04
    acá a ver si se lo puse por acá esto
  • 00:18:07
    sería el paso un y el paso
  • 00:18:12
    dos
  • 00:18:14
    Entonces vamos AC si se fijan de hecho
  • 00:18:17
    vamos a ver los cambios deit hay bueno
  • 00:18:20
    no van a ver muy bien porque no se ve
  • 00:18:22
    ahí
  • 00:18:24
    bien si se fijan acá el cambio que yo
  • 00:18:27
    hice fue bueno mover de lugar la se van
  • 00:18:32
    a perder porque como moví de lugar la
  • 00:18:34
    como moví de lugar la la entidad te
  • 00:18:37
    aparece como que es nueva pero bueno
  • 00:18:39
    fíjense que el cambio Acá está que se
  • 00:18:41
    llama en vez de en vez de de image bien
  • 00:18:48
    Esto requiere una mira cuando corremos
  • 00:18:50
    un hacemos un cambio deo que refleja un
  • 00:18:53
    cambio en la base de datos tenemos que
  • 00:18:54
    hacer la Mira eso es una cosa que
  • 00:18:56
    tenemos que hacer a
  • 00:18:57
    mano migration y acá le voy a poner un
  • 00:19:00
    significativo que es change image
  • 00:19:07
    column property vamos a poner
  • 00:19:12
    property experience in experience no se
  • 00:19:17
    preocupen con el largo del nombre no s
  • 00:19:20
    es mejor ser
  • 00:19:21
    representativo entonces acá hacemos la
  • 00:19:25
    migración fíjense que la está ejecutando
  • 00:19:27
    hace un build de aplicación sería lo que
  • 00:19:29
    no bua no no va a correr acá rompió el
  • 00:19:32
    build ahí es lo que hemos tocado que
  • 00:19:33
    generó un error en el código Ah miren yo
  • 00:19:37
    le cambié el nombre pero no le cambié
  • 00:19:38
    las
  • 00:19:39
    referencias qué tonto Ahí
  • 00:19:43
    estamos corremos de
  • 00:19:46
    vuelta í anduvo y fíjense que Se generó
  • 00:19:51
    una nueva migración un nuevo archivo y
  • 00:19:53
    snapshot sigue siendo igual sí es cierto
  • 00:19:55
    que hay un cambio y si se fijan en el
  • 00:19:57
    cambio vamos a mirar porque que está
  • 00:19:59
    bueno Esto de ver el cambio esto es ver
  • 00:20:07
    eh si se fijan en el cambio de
  • 00:20:14
    snapshot
  • 00:20:19
    miren V el cambio de snapshot es
  • 00:20:22
    solamente el cambio de la propiedad se
  • 00:20:25
    cambió Es el cambio y a su vez también
  • 00:20:27
    Se generó una migración Cuál es la
  • 00:20:29
    migración vamos a
  • 00:20:30
    mirarlo vamos a
  • 00:20:32
    sacarlo si no de última siem pueden
  • 00:20:35
    pausar Pero bueno creo no hace falta
  • 00:20:37
    entender el snapshot como tal sino ver
  • 00:20:39
    el cambio nada más y fíjense que si
  • 00:20:41
    vamos a la migration se hacen un un app
  • 00:20:44
    que es levantar la base de datos cambiar
  • 00:20:47
    una columna y y después hacer un down o
  • 00:20:51
    sea impactar ese cambio de la columna
  • 00:20:53
    con el cambio de nombre bueno no hace
  • 00:20:54
    falta meternos en estas complejidades
  • 00:20:56
    pero s básicamente podemos llegar a ver
  • 00:20:58
    que es un renombre una columna de este
  • 00:21:00
    nombre a este nombre
  • 00:21:02
    Sí entonces Bueno de hecho acá está
  • 00:21:04
    image name New name está clarísimo
  • 00:21:08
    Eh Así que bueno está está esto no hace
  • 00:21:13
    falta entenderlo pero es importante
  • 00:21:15
    saber qué sucede Y cómo cómo impactan
  • 00:21:18
    eso sobre todo para ver que las cosas
  • 00:21:19
    estén andando bien y ahora
  • 00:21:21
    eh No nos falta el paso dos que es la
  • 00:21:24
    impacto en base Porque si se fijan yo
  • 00:21:27
    voy a si yo hago un refresh acá
  • 00:21:30
    eh A ver porque a estas cosas eh vamos a
  • 00:21:36
    cuando estamos haciendo cambios enot
  • 00:21:38
    Está bueno por ahí abrirla de vuelta o
  • 00:21:40
    eso porque a veces queda como medio
  • 00:21:41
    bugado si se fijan el image pas llama
  • 00:21:44
    igual no cambio no cambio nada Qué
  • 00:21:46
    tenemos que hacer Tenemos que correr El
  • 00:21:48
    Comando a
  • 00:21:51
    database si yo lo corro este Comando van
  • 00:21:54
    a ver que pasan un montón de cosas y si
  • 00:21:56
    y si lo analizamos con Claridad acá van
  • 00:21:59
    a ver que están impactándose las cambios
  • 00:22:01
    de la migration dentro de la base de
  • 00:22:03
    datos están corriendo sentencias de sql
  • 00:22:05
    Este lenguaje estndar de base de datos
  • 00:22:07
    para poder impactarlo y si se fijan
  • 00:22:11
    ahora vamos a abrir de
  • 00:22:14
    vuelta el programita de base de
  • 00:22:24
    datos vamos a ver que imep ahora se
  • 00:22:27
    llama imep
  • 00:22:29
    bueno por acá esto a ver cómo estamos de
  • 00:22:31
    tiempo estamos bien de tiempo yo lo que
  • 00:22:34
    quiero mostrarles es ahora jugar un poco
  • 00:22:38
    con esto porque la verdad es que bueno
  • 00:22:40
    jugamos un
  • 00:22:42
    poquito pero quiero que sigamos jugando
  • 00:22:44
    un poco más Habíamos hecho un ad
  • 00:22:47
    experience y habíamos hecho nada más que
  • 00:22:49
    una lo que quiero mostrarles otro otro
  • 00:22:52
    Chiche y capaz con eso podemos llegar a
  • 00:22:55
    terminar es el CQ Inspector quiero que
  • 00:22:58
    vean
  • 00:22:59
    a ver si se puede
  • 00:23:11
    ver bueno Estaba buscando la herramienta
  • 00:23:14
    pero es de sql server porque es de la
  • 00:23:15
    base de dat yo no lo haba podo ver acá
  • 00:23:17
    demasiado pero si vamos a poder ver
  • 00:23:19
    desde acá un poco en esta consolita se
  • 00:23:21
    ven todas las cosas que se van
  • 00:23:23
    sucediendo en nuestra aplicación y Algo
  • 00:23:26
    vamos a poder analizar desde esta
  • 00:23:27
    consolita
  • 00:23:29
    vamos a tratar de jugar un poco con la
  • 00:23:30
    Api Entonces vamos a dejar esta
  • 00:23:32
    consolita acá esperemos que se pueda ver
  • 00:23:35
    algo y yo vamos a listar los elementos
  • 00:23:39
    que hay en la base de
  • 00:23:44
    datos Y fíjense si definitivamente se ve
  • 00:23:47
    algo fíjense que acá se corrió este
  • 00:23:49
    Comando que es Select y busca eh Bueno
  • 00:23:54
    es un comando sql que busca todos los
  • 00:23:55
    campos de la columna de experiencia y
  • 00:23:58
    trae el datato acá entonces bueno acá se
  • 00:24:01
    puede ir viendo todos los comandos que
  • 00:24:02
    se van ejecutando sobre nuestra base de
  • 00:24:04
    datos y por eso hay elementos acá sí
  • 00:24:07
    entonces bueno en fin e se pueden hacer
  • 00:24:10
    muchas cosas con esto e la clase que
  • 00:24:12
    viene esto ya es cortito este video pero
  • 00:24:14
    quería solamente centrarme en esto la
  • 00:24:16
    clase que viene ya vamos a
  • 00:24:19
    a yo Bueno vamos a a pulir todo esto
  • 00:24:23
    arreglar todos los para Que corran con
  • 00:24:25
    una base de datos y después ya empezamos
  • 00:24:28
    con autenticación Pero bueno yo ahora
  • 00:24:43
    e Bueno vamos a aprovechar para también
  • 00:24:46
    antes de terminar eh hacer digamos
  • 00:24:49
    arreglar un poco los que te habíamos
  • 00:24:51
    comentado simplemente por una cuestión
  • 00:24:53
    de de de que quedan andando con la
  • 00:24:55
    estructura de base de datos si se
  • 00:24:56
    acuerdan yo simplemente lo que necesito
  • 00:24:59
    hacer es Llamar a el expi repository que
  • 00:25:01
    es el que tiene que darnos todos los
  • 00:25:03
    métodos pero tenemos que ir creando
  • 00:25:06
    métodos para poder por ejemplo en este
  • 00:25:07
    caso Buscar por no por título Entonces
  • 00:25:09
    vamos al SP repository y vamos a hacer
  • 00:25:12
    nu nuevos nuevos métodos vamos acá a
  • 00:25:15
    hacer un método rapidito public list
  • 00:25:22
    experience que lo que va a hacer es get
  • 00:25:26
    pero ya no por cualquier cosa sino por
  • 00:25:28
    un nombre que era no lo que teníamos que
  • 00:25:32
    est en el controler era un get by title
  • 00:25:36
    entonces acá en Perdón en el repository
  • 00:25:39
    vamos a hacer tit vamos
  • 00:25:42
    Lamar y lo que va a retornar es esto
  • 00:25:47
    return
  • 00:25:49
    context experience y acá si hacemos
  • 00:25:52
    un y aplicamos link aplicamos B
  • 00:25:56
    búsquedas sobre es la el experience que
  • 00:26:00
    es el que tiene todos los datos que
  • 00:26:01
    nosotros
  • 00:26:02
    necesitamos acá tal que e title
  • 00:26:06
    sea igual habíamos hecho con igual
  • 00:26:11
    no Ah habíamos hecho
  • 00:26:14
    contains de hecho podríamos
  • 00:26:16
    tranquilamente copiarnos
  • 00:26:21
    este de hecho vamos a copiarnos para
  • 00:26:23
    asegurarnos que demás no cambio nada Es
  • 00:26:26
    simplemente
  • 00:26:28
    eh nos
  • 00:26:30
    copiamos ya
  • 00:26:34
    está era
  • 00:26:42
    tit y Acá hay que poner un to list
  • 00:26:46
    Porque necesitamos una lista ya está
  • 00:26:49
    tenemos nuestro nuestro método que busca
  • 00:26:52
    por título ahora contra la base de datos
  • 00:26:54
    y no contra esa lista estática que
  • 00:26:56
    habíamos hecho antes entonces entonces
  • 00:26:58
    acá simplemente lo que tenemos que hacer
  • 00:26:59
    es en vez de hacer esta
  • 00:27:02
    invocación lo que tenemos que hacer es
  • 00:27:07
    punto y le pasamos el fíjense que
  • 00:27:10
    tenemos dos sobrecargas una porque tiene
  • 00:27:12
    un parámetro y otra sin parámetro
  • 00:27:14
    Entonces ahora le pasamos title for
  • 00:27:17
    Search pasamos el parámetro Y eso va a
  • 00:27:19
    invocar a la sobrecarga del método que
  • 00:27:22
    es este de acá que tiene el parámetro
  • 00:27:24
    Acuérdense que los métodos se distinguen
  • 00:27:26
    también por los parámetros
  • 00:27:28
    bueno Tenemos uno vamos rapidito los
  • 00:27:31
    otros así no nos aburrimos teníamos este
  • 00:27:34
    de
  • 00:27:35
    acá
  • 00:27:37
    eh acá tenemos que cambiar el nombre
  • 00:27:40
    Porque habíamos
  • 00:27:45
    cambiado la ID no nos preocupa más
  • 00:27:48
    porque
  • 00:27:49
    nosotros no lo modificamos no le creamos
  • 00:27:52
    más el ID Así que fíjense eso También
  • 00:27:54
    acá habíamos hecho todo un maneje para
  • 00:27:56
    darle el ID del de la experiencia a la
  • 00:27:59
    hora de actualizar y demás ahora
  • 00:28:01
    nosotros eso no nos hace falta entonces
  • 00:28:06
    simplemente lo que vamos a hacer es si
  • 00:28:08
    es cierto Buscar la experiencia por
  • 00:28:11
    ID pero nada
  • 00:28:14
    más y cómo hacemos para buscar la
  • 00:28:16
    experiencia por Bueno lo que se me
  • 00:28:18
    ocurre ahora rapidito Aunque no es lo
  • 00:28:19
    mejor es llamar al método experi
  • 00:28:22
    repository.get
  • 00:28:25
    me traigo todo
  • 00:28:29
    y le aplico un we Esto no es lo mejor
  • 00:28:32
    pero bueno ya fue lo lógico sería que
  • 00:28:35
    hagamos una sobrecarga y la vamos a
  • 00:28:36
    hacer rapidito para hacer las cosas bien
  • 00:28:38
    Vamos a hacer una sobrecarga de get by
  • 00:28:42
    ID y lo único que vamos a hacer acá es
  • 00:28:45
    que en este método vamos a retornar
  • 00:29:14
    acá no es un Perdón
  • 00:29:16
    esto se retorno al primer
  • 00:29:20
    elemento que encuentre y acá si no
  • 00:29:23
    encuentra nada va retornar nulo si esto
  • 00:29:26
    acuérdense si con lo que estuy haciendo
  • 00:29:29
    con esta línea de We First ofa estos de
  • 00:29:31
    con mirense cursos de CP ese curso que
  • 00:29:35
    yo les puse orient objetos y un curso
  • 00:29:38
    link son cosas sencillas pero para cóm
  • 00:29:40
    operar sobre listas pero que escapan un
  • 00:29:42
    poco del curso este que le hablar De Api
  • 00:29:44
    esto es operar en listas que bueno es
  • 00:29:47
    digamos útil y se usa vida cotidiana
  • 00:29:50
    Pero no es lo que queríamos hablar en
  • 00:29:52
    este curso Así que eso igual es sencillo
  • 00:29:55
    chicos mírense un par de videos y lo van
  • 00:29:56
    a entender rápido
  • 00:29:58
    pero son propios entonces lo que
  • 00:30:01
    nosotros acá vamos a hacer es Llamar a
  • 00:30:03
    nosotros necesitamos lo que necesitamos
  • 00:30:06
    era más que la ID acá era bueno este
  • 00:30:09
    video este de acá yo se lo haby acar
  • 00:30:11
    para la clase que viene de hecho se lo
  • 00:30:13
    dejo de tarea agarren y acomoden esto
  • 00:30:15
    acomoden este para la estructura de
  • 00:30:17
    nuestra base de datos acdel ustedes yo
  • 00:30:19
    no lo voy a subir a esto al comando a
  • 00:30:21
    est esta modificación de hecho la voy a
  • 00:30:24
    volver para atrás Para dejarle tal cu
  • 00:30:26
    estaba antes
  • 00:30:31
    listo Entonces esta modificación yo no
  • 00:30:34
    la voy a no la voy a subir así se la la
  • 00:30:37
    arreglan a ustedes
  • 00:30:40
    e y Bueno les dejo esos estos dos de acá
  • 00:30:44
    para que lo arreglen ustedes la clase
  • 00:30:45
    que lo voy a arreglar lo voy a dejar yo
  • 00:30:47
    arregladito y ustedes pueden comprar
  • 00:30:49
    contra lo que hicieran ustedes pero yo
  • 00:30:51
    ahora lo que voy a hacer simplemente es
  • 00:30:53
    la clase que se lo muestro arreglado si
  • 00:30:55
    no perdemos tiempo pero bueno
  • 00:30:57
    básicamente es adaptar al manejo de El
  • 00:30:59
    repositorio Real hoy en día no Bueno e
  • 00:31:03
    los dejo acá porque si no se hace largo
  • 00:31:05
    el video y no era la idea eh nos estamos
  • 00:31:07
    viendo la clase que viene acuérdense de
  • 00:31:09
    hacer de tarea acomodar el código de
  • 00:31:11
    estas clases comentadas que ustedes les
  • 00:31:12
    van a tener comentadas ahí para poder
  • 00:31:14
    interactuar con nuestro repositorio que
  • 00:31:16
    tenemos ahora andando y vivando con base
  • 00:31:19
    de datos nos vemos y acuérdense de de
  • 00:31:22
    hacer la migración en su código y probar
  • 00:31:24
    todo Sí hasta la clase que viene
Tag
  • migración
  • ORM
  • base de datos
  • repositorio
  • snapshot
  • programación
  • estructura de código
  • controlador
  • instrucciones SQL
  • actualización de base de datos