none
Entity Framework 6 RRS feed

  • Pregunta

  • Hola

    Estoy usando EF6 enfoque database firts, es la primera vez que lo uso ya genere mi modelo y me a llamado la atención esto que voy a sombrear de negro.

    public partial class Cajas
        {
            public Cajas()
            {
                this.GestionCajas = new HashSet<GestionCajas>();
            }
        
            public string CajaId { get; set; }
            public string AlmacenId { get; set; }
            public string Descripcion { get; set; }
        
            public virtual Almacenes Almacenes { get; set; }
            public virtual ICollection<GestionCajas> GestionCajas { get; set; }
        }
    Si alguien me podría explicar lo que esta sombreado para que sirve y también si lo tengo que copiar tal cual en mi capa de Dominio de Entidades.
     

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 14 de octubre de 2014 12:49

Respuestas

  • porque usas un HasSet?

    [Entity Framework][Code First] Asociación uno a muchos (1/3)

    si podrias usar un List<>

    >>Si alguien me podría explicar lo que esta sombreado para que sirve

    esas propiedades se usan para poder navegar las entidades asociadas

    >>también si lo tengo que copiar tal cual en mi capa de Dominio de Entidades

    copiar que cosa?

    un modelo de persistencia puede ser diferente al modelo que uses en otra capa, no necesariamente tiene que ser una replica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 13:44
    martes, 14 de octubre de 2014 12:58
  • Hola, un HashSet<T> es un conjunto de valores. Puedes leer la documentación de MSDN HashSet<t>(Clase)</t>.

    El HashSet implementa como podrás ver los interfaces, entre otros, ICollection<T>, IEnumerable<T>, IEnumerable.

    La plantilla de EF genera las entidades con este tipo de datos. Como dice Leandro, 

    public virtual Almacenes Almacenes { get; set; }
    public virtual ICollection<GestionCajas> GestionCajas { get; set; }

    Estas propiedades generadas son para las Navigation Properties o propiedades de navegación. Al recuperar una Caja EF te puede recuperar en Almacenes el almacén relacionado con la Caja. 

    En cuanto a 

    public Cajas()
    {
           this.GestionCajas = new HashSet<GestionCajas>();
    }

    En el constructor se inicializa GestionCajas para que no tenga una colección a null. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 13:44
    martes, 14 de octubre de 2014 13:40
  • >>Si le quito esto en el dominio pasaría algo. el ICollection me supongo que es para colecciones como para cargar grillas.

    esas propiedades no solo son para grids, se puede usar para unir unas entidades con otras en las relaciones uno a muchos o muchos a muchos

    >>Me refiero a copiar toda la clase que obtuve en el modelo que esta en mi capa de persistencia, al momento de crear mi capa de EntidadesDominio

    porque copias clases de tu capa de persistencia al dominio?

    >>Y sobre el HashSet me lo genero el mismo EF estoy usando enfoque DB firts.

    ahh ok era por eso

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 14:14
    martes, 14 de octubre de 2014 13:45

Todas las respuestas

  • porque usas un HasSet?

    [Entity Framework][Code First] Asociación uno a muchos (1/3)

    si podrias usar un List<>

    >>Si alguien me podría explicar lo que esta sombreado para que sirve

    esas propiedades se usan para poder navegar las entidades asociadas

    >>también si lo tengo que copiar tal cual en mi capa de Dominio de Entidades

    copiar que cosa?

    un modelo de persistencia puede ser diferente al modelo que uses en otra capa, no necesariamente tiene que ser una replica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 13:44
    martes, 14 de octubre de 2014 12:58
  • @Leandro

    copiar que cosa?

    Me refiero a copiar toda la clase que obtuve en el modelo que esta en mi capa de persistencia, al momento de crear mi capa de EntidadesDominio solo tengo que copiar las propiedades como:

    public class Cajas
        {
            
        
            public string CajaId { get; set; }
            public string AlmacenId { get; set; }
            public string Descripcion { get; set; }
        
           
        }

    Pq si le quito esto :

    public virtual Almacenes Almacenes { get; set; }
    public virtual ICollection<GestionCajas> GestionCajas { get; set; }

    Si le quito esto en el dominio pasaría algo. el ICollection me supongo que es para colecciones como para cargar grillas.

    Y sobre el HashSet me lo genero el mismo EF estoy usando enfoque DB firts.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    • Editado Pedro Ávila martes, 14 de octubre de 2014 13:21 xxxxxx
    martes, 14 de octubre de 2014 13:17
  • Quedaría así?

    public class Cajas
        {
            
        
            public string CajaId { get; set; }
            public string AlmacenId { get; set; }
            public string Descripcion { get; set; }
        
            public virtual Almacenes Almacenes { get; set; }
            public virtual ICollection<GestionCajas> GestionCajas { get; set; }
        }


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 14 de octubre de 2014 13:30
  • Hola, un HashSet<T> es un conjunto de valores. Puedes leer la documentación de MSDN HashSet<t>(Clase)</t>.

    El HashSet implementa como podrás ver los interfaces, entre otros, ICollection<T>, IEnumerable<T>, IEnumerable.

    La plantilla de EF genera las entidades con este tipo de datos. Como dice Leandro, 

    public virtual Almacenes Almacenes { get; set; }
    public virtual ICollection<GestionCajas> GestionCajas { get; set; }

    Estas propiedades generadas son para las Navigation Properties o propiedades de navegación. Al recuperar una Caja EF te puede recuperar en Almacenes el almacén relacionado con la Caja. 

    En cuanto a 

    public Cajas()
    {
           this.GestionCajas = new HashSet<GestionCajas>();
    }

    En el constructor se inicializa GestionCajas para que no tenga una colección a null. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 13:44
    martes, 14 de octubre de 2014 13:40
  • >>Si le quito esto en el dominio pasaría algo. el ICollection me supongo que es para colecciones como para cargar grillas.

    esas propiedades no solo son para grids, se puede usar para unir unas entidades con otras en las relaciones uno a muchos o muchos a muchos

    >>Me refiero a copiar toda la clase que obtuve en el modelo que esta en mi capa de persistencia, al momento de crear mi capa de EntidadesDominio

    porque copias clases de tu capa de persistencia al dominio?

    >>Y sobre el HashSet me lo genero el mismo EF estoy usando enfoque DB firts.

    ahh ok era por eso

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Pedro Ávila martes, 14 de octubre de 2014 14:14
    martes, 14 de octubre de 2014 13:45
  • Ya entendí.

    Bien sobre la navegación que ya la trae implementada.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 14 de octubre de 2014 14:12