none
ayuda a comprender entity framework RRS feed

  • Pregunta

  • me pueden ayudar a entender este codigo bien

    using System.Data.Entity; 
    namespace MvcMusicStore.Models{
       
    public class MusicStoreEntities : DbContext{
           
    public DbSet<Album> Albums { get; set; }
           
    public DbSet<Genre> Genres { get; set; }
       
    }
    }

    lo que no entiendo bien es en la parte de DbSet<Album> 
    quisiera saber si esto bien instanciado desde el modulo o la base de dato
    la base de datos esta en el proyecto por ende esta trabajando con el SQL express 

    gracias

    miércoles, 16 de marzo de 2011 21:00

Todas las respuestas

  • Buenas,

    Con eso declaras un contexto de datos (clase que deriva de DbContext) que tiene dos conjuntos de entidades (usualmente un conjunto de entidades equivale a una tabla de la bbdd aunque no tiene porque ser así obligatoriamente).

    En este caso podríamos decir que se está mapeando una base de datos con dos tablas:

    1. Albums
    2. Genres

    Las columnas de las tablas dependerán del nombre de las propiedades de las clases Album y Genre (y de los mapeos).

    Que uses SQL Express no te afecta para nada. Por curiosidad ¿estás usando EF Code First?

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    jueves, 17 de marzo de 2011 7:22
  • claro 

    como dije hice en primer lugar el mismo ejemplo que muestra el tutorial

     

    pero cuando quería implementar a un proyecto propio me parecía que no hacia el mapeo de las tablas ya que cuando quería sacar algun dato siempre me devolvía vació 

     

    en caso del EFcode First si lo hice asi como muestra que esta instanciado el EFcode first es ver en las referencias al entity framework no es asi 

     

    pero el detalles es eso

     

    amigo mas bien una consulta cuando creas las clases que sirven para el mapeo de la tabla que esta en la base de datos uno necesariamente debe de instancias todos sus campos o solo los que necesita

    por ejemplo

    la tabla tiene

    >> id

    >> apellidos

    >> nombres

    pero si solo quiero usar apellidos y nombres solo haría asi

     

    public class personas{

      public string apellidos{get;set;}

      public string nombres{get;set;}

    }

    porfavor si me equivoco me puedes corregir

    jueves, 17 de marzo de 2011 14:43
  • Buenas.

    No, no te equivocas. Pero lo que si tienes que mapear es la PK (clave primaria) de la tabla. Es decir en el caso de personas el id, debes ponerlo. No puedes tener en tu modelo de entidades personas sin id, porque ese id es necesario para poder referenciar la persona en concreto a la bbdd.

    En el resto de campos, estás en lo cierto. Pero recuerda que si el campo no está en tus entidades, a todos los efectos es como "si no existiera", al menos para EF. Eso significa que todas las querys que genere EF ignorarán ese campo. Por lo tanto ese campo en la bbdd no puede ser no nullable y no tener valor por defecto, ya que en ese caso la query generada por EF te dará error al insertar el registro (pues la bbdd esperará un valor en el campo no mapeado y EF no lo proporcionará). Por lo general, lo suyo es mapear todos los campos (si están en la bbdd es por algo, no?).

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    jueves, 17 de marzo de 2011 16:24