Autor Tema: Duda con Entity Framework  (Leído 2792 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eduardo91

  • Sv Jr.
  • **
  • Mensajes: 50
Duda con Entity Framework
« : junio 26, 2012, 08:40:48 pm »
Hola espero anden bien.

Quisiera saber si alguien de foro a desarrollado algún sistema en el que tengas que darle mantenimiento a una bd usando el modelo code first de entity framework que consiste en crear las clases de cada tabla pero sin hacer uso del diseñador del entity data del vs, yo ya he usado entity pero haciendo uso del diseñador que trae el vs que te crea el modelo conceptual del a bd pero según me han dicho y leído esta forma no es muy eficiente.

Desconectado kerberoz

  • The Communiter-
  • *
  • Mensajes: 3713
Re:Duda con Entity Framework
« Respuesta #1 : junio 26, 2012, 09:09:34 pm »
Hola espero anden bien.

Quisiera saber si alguien de foro a desarrollado algún sistema en el que tengas que darle mantenimiento a una bd usando el modelo code first de entity framework que consiste en crear las clases de cada tabla pero sin hacer uso del diseñador del entity data del vs, yo ya he usado entity pero haciendo uso del diseñador que trae el vs que te crea el modelo conceptual del a bd pero según me han dicho y leído esta forma no es muy eficiente.

Yo he usado el Entity Framework con una base de datos de MySQL y SQLServer y no nunca me ha dado problema de rendimiento, kizas dolor de cabeza por la perdida de referencias al actualizar el modelo, segun entiendo esos frameworks te crean una clase por cada tabla de tu base de datos y lo unico que hay en esa clases son los procedimientos y atributos de tu tabla, en java he usado un framework similar que se llama Hibernet y funciona igual, es bien sencillo de usar.

Por ejemplo en Hibernet por cada tabla me crea un archivo java como el siguiente

Citar
import java.util.HashSet;
import java.util.Set;

/**
 * Tblcatalogo generated by hbm2java
 */
public class Tblcatalogo  implements java.io.Serializable {


     private Short idCatalogo;
     private String categoria;
     private Set<Tblarticulo> tblarticulos = new HashSet<Tblarticulo>(0);

    public Tblcatalogo() {
    }

   
    public Tblcatalogo(String categoria) {
        this.categoria = categoria;
    }
    public Tblcatalogo(String categoria, Set<Tblarticulo> tblarticulos) {
       this.categoria = categoria;
       this.tblarticulos = tblarticulos;
    }
   
    public Short getIdCatalogo() {
        return this.idCatalogo;
    }
   
    public void setIdCatalogo(Short idCatalogo) {
        this.idCatalogo = idCatalogo;
    }
    public String getCategoria() {
        return this.categoria;
    }
   
    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }
    public Set<Tblarticulo> getTblarticulos() {
        return this.tblarticulos;
    }
   
    public void setTblarticulos(Set<Tblarticulo> tblarticulos) {
        this.tblarticulos = tblarticulos;
    }
}

y un xml

Citar
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 05-22-2012 09:40:49 PM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
  <class catalog="db" name="com.system.model.Tblcatalogo" table="tblcatalogo">
    <id name="idCatalogo" type="java.lang.Short">
      <column name="idCatalogo"/>
      <generator class="identity"/>
    </id>
    <property name="categoria" type="string">
      <column length="254" name="categoria" not-null="true" unique="true">
        <comment>Nombre de la categoría.</comment>
      </column>
    </property>
    <set inverse="true" name="tblarticulos">
      <key>
        <column name="idCatalogo" not-null="true">
          <comment>Identificador de catálogo.</comment>
        </column>
      </key>
      <one-to-many class="com.system.model.Tblarticulo"/>
    </set>
  </class>
</hibernate-mapping>

Si mal no recuerdo en el Entity Framework te hace algo similar, podes crear las clases y los xml por tu cuenta, pero no tendrán mucha diferencia de los que creas con el asistente x_x.

Quizas lo que te puede dar problema en Visual estudio, es que al hacer modificaciones en el diseñador que trae integrado si te dará mas de un dolor de cabeza, recuerdo que cuando hacia una modificación a la base de datos actualizar el modelo que usas en Entity framework era toda una odisea :S como todo lo manejan los asistentes a saber donde rotas estaban las referencias perdidas o las inconsistencias del modelo con mi base de datos y en java como tenes mas control de tu código, podes agregar o quitar algo sin problemas.
« Última Modificación: junio 26, 2012, 09:22:45 pm por kerberoz »
El aguinaldo es un invento comunista; pero eso no te molesta, ¿Verdad?

Desconectado eduardo91

  • Sv Jr.
  • **
  • Mensajes: 50
Re:Duda con Entity Framework
« Respuesta #2 : junio 26, 2012, 09:27:24 pm »
Si yo también ya he usado el diseñador de entity framework con base de datos pero analizando el codigo que te genera crea código extra y por ejemplo usando el modelo code first tu creas solo el código necesario solo se usan clases cada clase es una tabla y según eh leído es mas eficiente hacerlo así porque tienes mas libertad, pero aun no e entendido como funciona este modelo code first mas que todo sobre como crear las relaciones entre las clases.

Desconectado kerberoz

  • The Communiter-
  • *
  • Mensajes: 3713
Re:Duda con Entity Framework
« Respuesta #3 : junio 26, 2012, 09:33:45 pm »
Si yo también ya he usado el diseñador de entity framework con base de datos pero analizando el codigo que te genera crea código extra y por ejemplo usando el modelo code first tu creas solo el código necesario solo se usan clases cada clase es una tabla y según eh leído es mas eficiente hacerlo así porque tienes mas libertad, pero aun no e entendido como funciona este modelo code first mas que todo sobre como crear las relaciones entre las clases.

Mira pero para hacer el codigo de las clases por tu cuenta tendrias que averiguar toda la sintaxis que usa el Entity Framework para crearlas, talvez deberias empezar por estudiar la documentacion de esa herramienta, te recomiendo este sitio

http://www.microsoftvirtualacademy.com

Inscribirte en el curso de Visual Studio sin duda ahí encontraras toda la documentación y la sintaxis para crear las clases por tu cuenta.

Pero si tenes una base de datos algo chola, no crees ke te estas tomando mucho trabajo, si esas herramientas estan para facilitarte la cosas  :phew: :phew:
« Última Modificación: junio 26, 2012, 09:36:47 pm por kerberoz »
El aguinaldo es un invento comunista; pero eso no te molesta, ¿Verdad?

Desconectado eduardo91

  • Sv Jr.
  • **
  • Mensajes: 50
Re:Duda con Entity Framework
« Respuesta #4 : junio 26, 2012, 10:02:13 pm »
Si ya estuve leyendo un poco sobre como crear las clases por tu cuenta y es como que crees una clase normal.

ejemplo.

Código: [Seleccionar]
public class Productos
{
    //por cada campo creas una propiedad
    int id{get; set;}
    public string Nombre { get; set; }
    //y asi con cada campo
}

Luego te creas una clase contexto para manejar todas tus tablas.
Código: [Seleccionar]
public class MiContexto : DbContext
{
        public DbSet Productos { get; set; }
}


El problema que mas tengo es como crear las relaciones entre las tablas osea entre las clases a eso no le e entendido muy bien.

Pero como tu dices si tengo una base de datos algo grande de unas 8 tablas digamos si usas el diseñador de entity data para crear el modelo conceptual de tu bd como que es un poco lento, en cambio aplicando la forma que te digo según eh leído y me han comentado es mas eficiente.

Pero gracias por tus comentarios seguiré viendo cual es la mejor manera de hacerlo.