none
Ayuda sobre entidades c# RRS feed

  • Pregunta

  • Buenas aprendiendo sobre base de datos me tope con entidades, Para que sirven?

    tengo entendido que se los usa con un datareader, pero cuales son las ventajas?

    Sera para hacer filtrados que no puede hacer el sql, hay filtrados que no puede hacer el sql :/

    Alguien me explique entidades por favor y si se los sigue usando en este año. ¿que es lo mas popular para base de datos?


    lunes, 28 de mayo de 2018 4:14

Respuestas

  • [...] me tope con entidades, Para que sirven?

    Cuando se habla de entidades en este contexto, típicamente lo que ocurre es que el desarrollador está utilizando lo que se denomina un "mapeador objeto-relacional" (ORM). Es una forma de trabajo en la que los datos que hay en las tablas de base de datos se trasladan a objetos (que son instancias de clases) dentro del programa. Cada uno de esos "objetos" que encapsula los datos de un registro de una tabla se denomina una "entidad".

    "Tengo entendido que se usa con un datareader" -> bueno, no necesariamente. Las herramientas de ORM típicamente ya implementan en su interior un DataReader que trae los datos desde la base de datos y los devuelve dentro de una entidad. De esta manera, el programador que utiliza esa herramienta no tiene que preocuparse del datareader, sino que simplemente llama a un método que significa "traeme los datos" y ese método ya devuelve las entidades sin que tengas que escribir a mano el datareader.

    "hay filtrados que no puede hacer el sql" -> No. El ORM lo que hace internamente es traducir la consulta a SQL, por lo que cualquier filtrado que hagas con el ORM en última instancia se convierte en un filtrado de SQL. Ahora bien, una vez que tienes los datos en las entidades, que son clases en memoria, por supuesto con esas clases puedes hacer cualquier operación que permita tu lenguaje de programación, y aquí sí que puedes hacer cosas que no podrían hacerse (al menos no fácilmente) con SQL. Pero esto es genéricamente aplicable a cualquier objeto que tengas en memoria, no tiene nada que ver el hecho de que a ese objeto le hayamos llamado "entidad" o que se haya cargado desde una base de datos.


    EDITADO: Desde luego, puedes usar entidades sin tener un ORM. Simplemente declaras una clase y luego cargas de datos una lista de instancias de esa clase usando un DataReader (y a esas instancias les llamas "entidades"). Pero esto es un poco pesado de escribir, y no tiene sentido hacerlo a mano cuando resulta que ya vienen con Visual Studio las herramientas que te lo hacen automáticamente (se llama "Entity Framework" y es "el ORM de Microsoft").
    lunes, 28 de mayo de 2018 6:36

Todas las respuestas

  • Hola ForgottenJj:

    Primero te expongo, lo que yo leo de tu consulta, y luego te indico por donde puedes mirar. (Siempre desde mi opinión sobre lo que has escrito)

    Supongo que castellanizar un concepto leido, a veces no aporta mucho, o al menos confunde un poco. Cuando dices "me tope con entidades", voy a entender que te refieres a Entities.

    En segundo lugar, tienes que ser un poco más preciso, porque tal cual lo planteas, es como si yo te cuento, estaba por la web y me tope con C sharp.... y me parece que se utilizan herencias.

    Supongo que la respuesta que me puedas dar, va a ser cuanto menos, complicada para tí.

    Cuando te refieres a filtrados que no hace el Sql, ufff, creo que hay que necesitar ser muy máquina, para que el Sql no pueda filtrar por algo, dado, que quizá ese sea uno de los grandes objetivos finales de un gestor de bases de datos.

    Te voy al lio.

    Lee este artículo que es muy interesante

    https://msdn.microsoft.com/es-es/communitydocs/net-dev/dev/buenas-practicas-parte3

    En cuanto a las arquitecturas de programación, no pienses en ejercicios anuales, porque si algo solo funciona un año, mejor no lo utilices. Intenta buscar buenos módelos, que te den buenas bases y que tengan una estructura muy sólida. El uso de ORM,s. es algo positivo.

    Espero que te aporte algo.

    Un saludo

    lunes, 28 de mayo de 2018 5:36
  • [...] me tope con entidades, Para que sirven?

    Cuando se habla de entidades en este contexto, típicamente lo que ocurre es que el desarrollador está utilizando lo que se denomina un "mapeador objeto-relacional" (ORM). Es una forma de trabajo en la que los datos que hay en las tablas de base de datos se trasladan a objetos (que son instancias de clases) dentro del programa. Cada uno de esos "objetos" que encapsula los datos de un registro de una tabla se denomina una "entidad".

    "Tengo entendido que se usa con un datareader" -> bueno, no necesariamente. Las herramientas de ORM típicamente ya implementan en su interior un DataReader que trae los datos desde la base de datos y los devuelve dentro de una entidad. De esta manera, el programador que utiliza esa herramienta no tiene que preocuparse del datareader, sino que simplemente llama a un método que significa "traeme los datos" y ese método ya devuelve las entidades sin que tengas que escribir a mano el datareader.

    "hay filtrados que no puede hacer el sql" -> No. El ORM lo que hace internamente es traducir la consulta a SQL, por lo que cualquier filtrado que hagas con el ORM en última instancia se convierte en un filtrado de SQL. Ahora bien, una vez que tienes los datos en las entidades, que son clases en memoria, por supuesto con esas clases puedes hacer cualquier operación que permita tu lenguaje de programación, y aquí sí que puedes hacer cosas que no podrían hacerse (al menos no fácilmente) con SQL. Pero esto es genéricamente aplicable a cualquier objeto que tengas en memoria, no tiene nada que ver el hecho de que a ese objeto le hayamos llamado "entidad" o que se haya cargado desde una base de datos.


    EDITADO: Desde luego, puedes usar entidades sin tener un ORM. Simplemente declaras una clase y luego cargas de datos una lista de instancias de esa clase usando un DataReader (y a esas instancias les llamas "entidades"). Pero esto es un poco pesado de escribir, y no tiene sentido hacerlo a mano cuando resulta que ya vienen con Visual Studio las herramientas que te lo hacen automáticamente (se llama "Entity Framework" y es "el ORM de Microsoft").
    lunes, 28 de mayo de 2018 6:36
  • Gracias amigos, Ya entendí el objetivo de las entidades segun alberto seria esto:

    puedes hacer cualquier operación que permita tu lenguaje de programación, y aquí sí que puedes hacer cosas que no podrían hacerse (al menos no fácilmente) con SQL.

    Si todo se haría facilemente en Sql estos no existirian. Si no estoy en lo correcto que alguien me corriga.  Ya que un Datatable se puede llenar con un datareader sin necesidad de crear clases. Yo me preguntaba eso para que sirven cual es el beneficio. 

    lunes, 28 de mayo de 2018 18:34
  • El beneficio es que una vez que has traído los datos a las entidades, aplicas sobre estas la programación orientada a objetos, mientras que si tienes los datos en un DataTable, tienes que seguir pensando en términos de tablas.

    Por ejemplo, si los datos de una tabla de clientes te los traes a una entidad "Cliente", puedes acceder a cliente.Nombre, cliente.Apellido, etc., que queda más claro en el programa. Pero los ORM en general van más allá y anidan las entidades conforme con las relaciones entre tablas, con lo que puedes acceder a cliente.Pedidos.Count, o cliente.Pedidos[0].Productos[1].Descripcion. Esto quedaría considerablemente más complejo de escribir y de entender si lo hicieses con DataTables.

    martes, 29 de mayo de 2018 6:58