Я пытаюсь использовать 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);
}
}
}