Dapper.Contrib 方法对 IDbConnection 对象不可用

Dapper.Contrib methods unavailable for IDbConnection object

我正在尝试使用 Dapper.Contrib 来扩展 IDbConnection 接口的功能,其中包括 .insert() 方法。

为此,我遵循了一些简短而分散的文档 here and here。简而言之,我使用 NuGetDapperDapper.Contrib 添加到我的项目中,我在我的存储库顶部添加了 using Dapper;using Dapper.Contrib; class,我正在使用 System.Data.SqlClient.SqlConnection() 创建一个 IDbConnection

不过,我的连接对象没有可用的扩展方法。例如,当尝试使用 .insert() 方法时,我收到消息:

'IDbConnection' C# does not contain a definition for 'Insert' and no extension method 'Insert' accepting a first argument of type could be found (are you missing a using directive or an assembly reference?)

这是一个使用 Razor Pages 的 ASP.NET Core 2.0 项目。
为了完整起见,您可以在下面找到存储库 class。
也许有趣的是,Dapper 和 Dapper.Contrib 的 using 行显示为灰色...
此外,当然我有一个(非常简约的)模型 Class 用于测试实体,包含一个参数 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);
        }
    }
}

您正在寻找的 Insert 方法存在于 Dapper.Contrib.Extensions 命名空间中,如 source 中所示,为了完整起见包括:

namespace Dapper.Contrib.Extensions
{
    ...

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

    ...
}

因此,为了使用扩展方法,您应该在代码中添加以下行:

using Dapper.Contrib.Extensions;