none
Donde mapear mis clases c# a ef RRS feed

  • Pregunta

  • Buenas a todos, tengo una duda antes de comenzar un pequeño desarrollo con EF, como seria la forma mas correcta de mapear mis entidades a sql ? (sin usar code first)  hasta el momento las estoy mapendo en mis dto's para que ellos sean los encargados de "Automapearse"... estara correcto esto ?

     public class NotaDto
        {
            public int id { get; set; }
            public string Titulo { get; set; }
            public string Descripcion { get; set; }
            public DateTime FechaCreacion { get; set; }
            public DateTime LastUpdate { get; set; }
    
    
            public NotaDto toEntity(Nota dbEntity)
            {
                this.id = dbEntity.id;
                this.Titulo = dbEntity.Titulo;
                this.Descripcion = dbEntity.Descripcion;
                this.FechaCreacion = dbEntity.FechaCreacion;
                this.LastUpdate = dbEntity.LastUpdate;
    
                return this;
            }
    
            public Nota toSQL()
            {
                var sqlEntity = new Nota();
                sqlEntity.Titulo = this.Titulo;
                sqlEntity.Descripcion = this.Descripcion;
                sqlEntity.FechaCreacion = this.FechaCreacion;
                sqlEntity.LastUpdate = this.LastUpdate;
    
                return sqlEntity;
            }
    
            public List<NotaDto> allToEntities(List<Nota> sqlList)
            {
                List<NotaDto> list = new List<NotaDto>();
                foreach (var item in sqlList)
                {
                    NotaDto nota = new NotaDto();
                    nota.toEntity(item);
                    list.Add(nota);
                }
    
                return list;
            }
        }

    Luego al insertar:

    public void Insert(NotaDto entity) { using (var context = new NotasEntities()) { context.Nota.Add(entity.toSQL()); context.SaveChanges(); } }

     public List<NotaDto> GetAll()
     {
                NotaDto nota = new NotaDto();
                using (var context = new NotasEntities())
                {
                    var sqlEntities = (from n in context.Nota select n).ToList();
                    return nota.allToEntities(sqlEntities); //Aqui convierte a list
                }
     }


    Será buena opcion hacerlo así?  Tengo la duda que por cada clase que cree, debo hacer lo mismo.... hay una forma de hacerlo mas generico ?

    martes, 15 de agosto de 2017 18:15

Respuestas

  • hola

    el mapea lo podrias realizar en la capa de negocio, o sino en el evento en al presentacion, no es bueno que este dentro de la propia clase de transporte

    podrias ayudarte con la libreria automapper, te ayudara a mapear las propiedades de las clases dto a las de persistencia

    esta la puedes agregar la referencia por nuget

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Daniel dev viernes, 18 de agosto de 2017 22:49
    martes, 15 de agosto de 2017 18:48