Esteban Ricardo Sierra
El tipo de dato Guid es un 'Identificador global único' el cual nos retorna un dato unico, ejemplo : 5a7939fd-59de-44bd-a092-f5d8434584de
Daniel Osvaldo Lopez García
muchísimas gracias, por el aporte.
Nelson Arturo Cortes Briceño
tenia esa duda, gracias bro
Para los que no les gusta escribir todo el código desde cero pueden añadir esta extencion a su VSC: C# y C# Extensions asi no van a tener que escribir el namespace y la clase, ya las extensiones lo hacen por uno, van a ir al panel izquiedo en donde estan unos cuadrados dice extenciones y luego en añadir o pueden descargarlas.
Aqui les dejo los links:
Hola , Intenta usar esta.
https://marketplace.visualstudio.com/items?itemName=kreativ-software.csharpextensions.
La que comparte el compañero ya està en desuso, por lo tanto, no tiene mantenibilidad y puede generar probemas de compatibilidad.
Kevin Castellano
Si tienen el problema que sin importar el nombre de alguna de las clases creadas les arroja el error de que ya existe pueden ejecutar el comando "Restart OmniSharp".
Presionen Ctrl + Shift + P y en el cuadro de texto que se abre escriben "Restart OmniSharp" sin comillas y presionan Enter
Daniel David Mejia Vargas
Sabes porque sucede esto? Me funciono pero si me gustaría saber el porque.
Facundo Oubel
Tambien me interesaria saber por que sucede esto
Kevin Castellano
La palabra clave virtual se utiliza para modificar un método, propiedad, indizador o declaración de evento y permite invalidar cualquiera de estos elementos en una clase derivada.
Fuente:
Fuente de la fuente:
Carlos Arturo Mendoza Mejía
Kevin Castellano, están caídos los enlaces.
Jonathan Cumini
Los links no funcionan si les haces clic, pero puedes usar la URL sin problemas.
Hans González
Para no estar escribiendo el public x x x , pueden escribir prop y automáticamente les generara el detalle del objeto con get y set, y solo es de cambiarle de que tipo y nombre :)
Jonathan Cumini
Excelente! Y propfull se usa para explicitar los métodos get y set (no para esta clase)
Platzi Team
Creacion de Modelos
Lo primero que debemos hacer para crear nuestros modelos es crear una carpeta Models donde guardaremos nuestras clases para cada tabla:
En nuestro archivo Categoria.cs, creamos nuestro modelos con los atributos de igual manera en nuestro archivo Tara.cs
public class Categoria { public int Id { get; set; } public string Nombre { get; set; } public virtual ICollection<Tarea> Tareas { get; set; } } public class Tarea { public int Id { get; set; } public string Nombre { get; set; } public int CategoriaId { get; set; } public virtual Categoria Categoria { get; set; } }
**Guid**es un acrónimo que significa "Globally Unique Identifier", es decir, un Identificador Único Global en inglés. Es un tipo de datos que se utiliza para identificar de forma única y segura elementos, ya sea en una aplicación o en un sistema.
Los **Guid**se componen de 16 bytes que se combinan para formar un número único, y están diseñados para ser globales, es decir, que no se repitan en ninguna parte del mundo. Esto los hace muy útiles para identificar elementos únicos en un sistema distribuido, como por ejemplo, registros en una base de datos.
En el ejemplo anterior, se utiliza un **Guid**para identificar cada categoría y tarea, garantizando que cada una tenga un identificador único y no haya conflicto entre ellas.
Expandiendo los conocimientos:
Get**y Set son propiedades de acceso que permiten obtener y establecer valores para una propiedad determinada. En otras palabras, Get permite leer el valor de una propiedad y Set permite asignarle un nuevo valor. En el ejemplo de las clases Categoria y Tarea
, se utiliza una combinación de Get y Set para definir las propiedades Id, Nombre, CategoriaId y Categoria.Virtual es un modificador de acceso que permite a una propiedad ser sobreescrita en clases heredadas. En el ejemplo, la propiedad Categoria de la clase Tarea se marca como virtual para permitir que se sobreescriba en una clase heredada.ICollection<T> es una interfaz genérica que representa una colección de objetos que se pueden recorrer y modificar. En este caso, ICollection<Tarea> se utiliza para definir la propiedad Tareas en la clase Categoria, que representa una colección de tareas asociadas a una categoría.Luis Enrique Carreño Herreño
Que ventajas existen al usar como tipo de dato GUID para el identificador de una entidad? Que ventajas tienen respecto al uso de identities en SQL Server y sequences en PostgreSQL?
Miguel Teheran
ProfesorExcelente pregunta! GUID es unico en todo el entorno de la base de datos, usando un numerico autoincrementado vas a tener varios repetidos en cada tabla y esto imposbilita el buscar un registro de manera global. En las bases de datos NoSQL es casi mandatorio usar GUID por el tema de no manejar relaciones
juan lopes
En el contexto de EF, marcar una propiedad como virtual permite a EF usar la carga diferida para cargarla. Para que la carga diferida funcione, EF tiene que crear un objeto proxy que invalide las propiedades virtuales con una implementación que cargue la entidad a la que se hace referencia cuando se accede a ella por primera vez. Si no marca la propiedad como virtual, la carga diferida no funcionará con ella.
Jonathan Cumini
Gracias Juan! Podrías añadir un link donde se explique en mayor detalle? Soy de los que les gusta entender cada keyword :)
Juan Heredia
Por si tienen problemas y nos les funciona el Hello Word dentro de su IDE, les dejo las siguientes notas
Si ejecutamos nuestro proyecto y este no funciona, aparece el mensaje de using a preview package for this significa que estamos intentando compilar una versión que no es compatible y por lo tanto marcara errores, para solucionar esto debemos identificar la versión de net con la que estamos trabajando para eso usamos el comando dotnet –version Esto nos indicara la versión en la que estamos, algunas versiones solo son compatibles con el IDE más reciente con el que trabajamos, por ejemplo, la versión 6.0 no es compatible con Visual Studio 2019, por lo que no podremos indicarle que se trata de esta versión y no entenderá algunos comandos que le estamos enviando. Para abrir la pestaña de propiedades de un proyecto damos clic derecho sobre el y seleccionamos la versión de .NET
También podría funcionar si permitimos funciones preview en nuestro IDE, para ello nos dirigimos a las opciones de visual Studio (en la pestaña de Tools) y buscamos preview
Carlos Arturo Mendoza Mejía
Ahi te falto un signo de "-" amigo, el comando es este:
dotnet --version
Me gusto tu aporte :)
Felipe de Jesús Isidro
Por que los atributos de relación los coloca como virtual?
Miguel Teheran
ProfesorPara que la logica del atributo se pueda sobreescribir. de estamera intermente entity fraemwork hace la implementación y al momento de usarlo devuelve los datos relacionados
Yaoska Margarita Telleria López
¿Por qué una de las propiedades es de ICollection y la otra no?, alguien tan amable que me explique
Miguel Teheran
ProfesorICollection se necesita en EF cuando queremos hacer referencia sobre una collecion que se va cargar de manera virtual y que debe soportar todas las operaciones de una tabla es decir list, add, edit, delete
Miguel Teheran
ProfesorICollection se necesita en EF cuando queremos hacer referencia sobre una colección que se va cargar de manera virtual y que debe soportar todas las operaciones de una tabla es decir list, add, edit, delete
Juan Betancur
Lo que haces con public virtual es hacer las relación de las llaves foráneas?
Miguel Teheran
ProfesorPara poder extraer información de la relación
Juan Carlos Gelpud Rosero
Para que sirve el virtual? Lo he visto en muchas ocasiones pero no entiendo si el uso de este es para optimizar el uso en memoria.
Miguel Teheran
ProfesorBásicamente indica que puede una propiedad o método puede ser sobrescrito por cualquier clase que herede de el usando el override. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/virtual
Esteban Cerda Román
Guid:
es un acrónimo. Significa "Globally Unique Identifier" = Identificador Único Global. Es un tipo de datos que se utiliza para identificar de forma única y segura elementos, ya sea en una aplicación o en un sistema.
Los Guid se componen de 16 bytes que se combinan para formar un número único, y están diseñados para ser globales, o sea, que no se repitan en ninguna parte del mundo. Esto los hace muy útiles para identificar elementos únicos en un sistema distribuido, como por ejemplo, registros en una BD.
César David García Narro
Tengo problemas para llevar el curso, puesto estoy siguiendo la ruta Backend pero no es la primera vez que siguiendo la ruta me toco con un curso que me pide otros cursos. Mi duda es, para este curso realmente cuanto necesito saber de C# ya que menciono que existe un curso de C# que tomar, y es el primero en la ruta de Backend C# y .NET pero en ningún momento del curso vemos, propiedades o clases.
Miguel Teheran
ProfesorHola Cesar, nos hace falta un curso en ese paso de POO con C# para poder enteder esa parte. Lamento mucho tu confusion. Hay curso que te peude servir simplemente que esta muy desactualizado pero en conceptos generales te puede ayudar: https://platzi.com/cursos/fundamentos-csharp-2/
David Orlando Gomez Alarcon
No entendi el GUID y el Virtual, me lo prodrian explicar mejor
Miguel Teheran
ProfesorGUID es un identificador único en el contexto de la base de datos. Es super chevere por que te garantiza tener un identificador que no es autoincrementado y que no repite dentro de todo el contexto de la BD. muchas bases de datos vienen optimizadas para este tipo, mas información en:
virtual es una palabra clave reservada de C# que permite indicar que un método o que una propiedad se puede sobreescribir. Usamos esta propiedad en EF para que al momento de llenar la información poder enlazar la propiedad con la referencia de la base de datos.
Kevin Eduardo Vásquez Oliva
¿El nombre del namespace puede ser cualquier nombre o debe estar relacionado al nombre de la carpeta que contiene el proyecto?
Miguel Teheran
ProfesorGeneralmente se utiliza el nombre del proyecto y se va extendiendo por carpeta por ejemplo: MyProject MyProject.Models MyProject.Data
Leidy Ruiz
si las tablas tienen una relación como se puede especificar al modelo la relación que existe entre una clase y otra para que la tabla tenga la misma relación?
Miguel Teheran
ProfesorEn las clases de mas adelante vamos aprender paso a paso esta parte de las relaciones para mas info acá: https://www.entityframeworktutorial.net/efcore/configure-one-to-many-relationship-using-fluent-api-in-ef-core.aspx
Mauricio Zárate
Me llama la atención que las propiedades de las clases se las declare de tipo public pero que se les agreguen getters y setters.
¿No sería mejor declararlas como private u omitir el uso de los getter y los setter?
Carlos Enrique Ruiz Medina
Encapsulamiento con flexibilidad: Las propiedades como public string Titulo { get; set; } son una forma abreviada de declarar campos privados con acceso controlado. Aunque son públicas, permiten agregar lógica interna más adelante sin cambiar la interfaz pública.
public string Titulo { get => _titulo; set { if (string.IsNullOrWhiteSpace(value)) throw new ArgumentException("El título no puede estar vacío"); _titulo = value; } }
Las propiedades privadas solo se usan dentro de la clase, lo que limita su utilidad si necesitas exponer datos a otras partes del sistema.
Fuente: Copilot
sergio Castro cano
Porque en Categoria se declara la propiedad virtual como ICollection?
Miguel Teheran
ProfesorPara que pueda sobreeescribirse por EF y cambiar el comportamiento