C #: Cómo usar la interfaz con el ordenado ORM

c# dapper

Pregunta

Tengo una aplicación compleja para las operaciones DB. Estoy usando Dapper Micro-ORM, quiero hacer un código débilmente acoplado. Sugiera cómo puedo usar la interfaz en lugar de la clase con dapper. Tengo el siguiente código:

public IEnumerable<Category> Find()
    {
        using (IDbConnection _conn = GetConnection)
        {
            _conn.Open();
            return _conn.Query<Category>("usp_Category", commandType: CommandType.StoredProcedure);
        }
    }

Quiero reemplazar con

public IEnumerable<ICategory> Find()
    {
        using (IDbConnection _conn = GetConnection)
        {
            _conn.Open();
            return _conn.Query<ICategory>("usp_Category", commandType: CommandType.StoredProcedure);
        }
    }

Respuesta popular

Lo que estás tratando de hacer con Dapper y C# es incorrecto:

_conn.Query<ICategory>("usp_Category", commandType: CommandType.StoredProcedure);

Está tratando de obtener IEnumerable<ICategory> , lo cual no funcionará, ya que ICategory es una interface y no puede llenarse como espera, puede obtener como máximo: IEnumerable<Category> . No puede inicializar una ICategory interface como una clase concreta, que no es posible

ICategory ic = new ICategory();

IEnumerable<ICategory> no es el uso correcto, y no se puede buscar por ningún medio, para comprender que es necesario comprender la diferencia entre una interface y concrete clase concrete y su uso.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué