none
obtener datos desde un repository RRS feed

  • Pregunta

  • buen dia 

    tengo el siguiente repositorio 

      public virtual void Add(T entity)
            {
                dbSet.Add(entity);
            }

    tengo una capa de servicios en la cual hago un comparativo 

    lse if (user == null & totvsuser != null)
                {
                    if(provider==null)
                    {
                        [.. se necesita agregar datos desde una consulta de base de datos..]
    //ejemplo 
    provider provider = nombreRepositorio.Add(m => m.Nombre == nombre & m.correo == correo)
    
    
    
                    }
                    else
                    {
                        throw new AccessViolationException("usuario ya esta en provedores");
                    }
    
                }

    los valores que necesito vienen de otro repositorio que esta en SQL,

    me no se si esto se a correcto o hay una forma en la cual yo podrá hacer esto insertar registros de un repositorio donde estoy consultando e ingresarlos por medio de otro repositorio a otra tabla

     public class ToRepository : IToRepository
        {
            private const string connectionString = " conexion";
    
            public User GetUser(string email, string password)
            {
                string query = "SELECT " +
                                   "Name," +
                                   "Email," 
                               "FROM " +
                                    "Tabla ";
                
                DataTable userData = ExecuteReader(query);
    
                if (userData.Rows.Count == 0)
                    return null;
                else
                {
                    User user = new User();
    
                    user.Name = userData.Rows[0]["UserId"].ToString().Trim();
                    user.Email = userData.Rows[0]["Email"].ToString().Trim();
    
                    return user;
                }
            }
    
            private DataTable ExecuteReader(string query)
            {
                DataTable data = new DataTable();
    
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        connection.Open();
                        data.Load(command.ExecuteReader());
                    }
                }
    
                return data;
            }
        }
    }

    perdón pro preguntar pero soy un poco nuevo en cuestión de programación  


    lunes, 7 de enero de 2019 22:27

Respuestas

  • Hola, es correcto que en la capa de Servicios, se usen los repositorios que sean necesarios. No es correcto referenciar un repositorio en otro repositorio. El servicio se encarga de la realizar la lógica pertinente.

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

    martes, 8 de enero de 2019 14:00
    Moderador

Todas las respuestas

  • Hola  christian s 

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.

    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Pedro Alfaro
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    lunes, 7 de enero de 2019 23:28
    Moderador
  • hola

    >>no se si esto se a correcto o hay una forma en la cual yo podrá hacer esto insertar registros de un repositorio donde estoy consultando e ingresarlos por medio de otro repositorio a otra tabla

    Por lo que estas planteando pareceria que no, porque entiendo con cada implementacion de repositorio te conectas a una db diferente, quizas si fuera la misma db podrias convertir de uno a otro usando un procedure

    Lo que si veo incorrecto es que conviertas un reader en datatable para despues pasar esto a una entidad, eso no es performante, podrias directamente el reader convertirlo a entidad

            public User GetUser(string email, string password)
            {
    			User user = null;
    			
                string query = @"SELECT 
                                   Name,
                                   Email,
                               FROM Tabla" ;
                
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        var reader = command.ExecuteReader());
    					
    					if(reader.Read())
    					{
    					    user = new User();
    
    						user.Name = userData.Rows[0]["UserId"].ToString().Trim();
    						user.Email = userData.Rows[0]["Email"].ToString().Trim();
    					}
                    }
                }
    			
    			return user;
            }

    como veras el reader es directo, si puedes no uses datatable  para convertir a entidades de negocio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 8 de enero de 2019 12:51
  • Hola, es correcto que en la capa de Servicios, se usen los repositorios que sean necesarios. No es correcto referenciar un repositorio en otro repositorio. El servicio se encarga de la realizar la lógica pertinente.

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

    martes, 8 de enero de 2019 14:00
    Moderador
  • gracias por tu pronta respuesta es correcto cada repositorio esta conectado a una base de datos distinta, el problema es que por cuestiones internas tengo que tomar de la base de datos y llenar la tabla de la otra base de datos, no se si me puedes dar un tip de como lo podría hacer 

    gracias por la observación del punto que comentas , lo verificare  

    martes, 8 de enero de 2019 16:56