Dapper.Contrib métodos no disponibles para el objeto IDbConnection

asp.net asp.net-core dapper dapper-contrib razor

Pregunta

Estoy tratando de usar Dapper.Contrib para extender la funcionalidad de la interfaz IDbConnection con, entre otros, el método .insert() .

Para hacerlo, he seguido la documentación algo breve y dispersa aquí y aquí . En resumen, he usado NuGet para agregar Dapper y Dapper Dapper.Contrib con mi proyecto, he agregado el using Dapper; y using Dapper.Contrib; en la parte superior de mi clase Repository, y estoy usando System.Data.SqlClient.SqlConnection() para crear una IDbConnection .

Aún así, mi objeto de conexión no tiene los métodos extendidos disponibles. Por ejemplo, cuando trato de usar el método .insert() , .insert() el mensaje:

'IDbConnection' C # no contiene una definición para 'Insertar' y no se puede encontrar ningún método de extensión 'Insertar' que acepte un primer argumento de tipo (¿falta una directiva using o una referencia de ensamblado?)

Esto es en un proyecto ASP.NET Core 2.0 usando Razor Pages.
Para completar, puedes encontrar la clase de Repositorio a continuación.
Tal vez sea interesante notar que las líneas que using Dapper y Dapper.Contrib están atenuadas ...
Además, por supuesto tengo una Clase de Modelo (muy minimalista) para la Entidad de PRUEBA, que contiene un parámetro, TEST_COLUMN , anotado con [Key] .

using Dapper.Contrib;
using Dapper;
using Microsoft.Extensions.Configuration;
using TestProject.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;

namespace TestProject.Repository
{
    public class TEST_Repository
    {
        IConfiguration configuration;

        public TEST_Repository(IConfiguration configuration)
        {
            this.configuration = configuration;
        }

        public void Insert()
        {
            using (var con = this.GetConnection())
            {
                con.Insert(new TEST { TEST_COLUMN = "test" });
            }
        }

        public IDbConnection GetConnection()
        {
            return new SqlConnection(configuration.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value);
        }
    }
}

Respuesta aceptada

El método Insert que está buscando vive dentro del espacio de nombres Dapper.Contrib.Extensions , como se puede ver en la fuente , incluido para completar:

namespace Dapper.Contrib.Extensions
{
    ...

    public static long Insert<T>(this IDbConnection connection, ...)

    ...
}

Por lo tanto, para usar los métodos de Extensión, debe agregar la siguiente línea a su código:

using Dapper.Contrib.Extensions;


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é