Методы Dapper.Contrib недоступны для объекта IDbConnection - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь использовать Dapper.Contrib для расширения функциональности интерфейса IDbConnection, в том числе с помощью метода .insert().

Для этого я следовал несколько краткой и разбросанной документации здесь и здесь . Короче говоря, я использовал NuGet для добавления Dapper и Dapper.Contrib к своему проекту, я добавил using Dapper; и using Dapper.Contrib; в начало моего класса репозитория, и я использую System.Data.SqlClient.SqlConnection() для создания IDbConnection.

Тем не менее, мой объект соединения не имеет доступных расширенных методов. Например, при попытке использовать метод .insert() я получаю сообщение:

'IDbConnection' C # не содержит определения для 'Вставить' и нет метод расширения «Вставка», принимающий первый аргумент типа, может быть найдено (вам не хватает директивы using или ссылки на сборку?)

Это в проекте ASP.NET Core 2.0 с использованием Razor Pages.
Для полноты вы можете найти класс Repository ниже.
Возможно, интересно отметить, что строки using для Dapper и Dapper.Contrib затенены ...
Также, конечно, у меня есть (очень минималистичный) класс модели для объекта TEST, содержащий один параметр, TEST_COLUMN, помеченный [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);
        }
    }
}

1 Ответ

0 голосов
/ 26 апреля 2018

Метод Insert, который вы ищете, живет внутри пространства имен Dapper.Contrib.Extensions, как видно из источника , включенного для полноты:

namespace Dapper.Contrib.Extensions
{
    ...

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

    ...
}

Следовательно, чтобы использовать методы Extension, вы должны добавить следующую строку в ваш код:

using Dapper.Contrib.Extensions;
...