5

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

为此,我遵循了此处此处的一些简短而分散的文档。简而言之,我曾经在我的项目NuGet中添加DapperDapper.Contrib,我已经在我的 Repository 类的顶部添加了using Dapper;using Dapper.Contrib;,我正在使用System.Data.SqlClient.SqlConnection()它来创建一个IDbConnection.

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

'IDbConnection' C# 不包含'Insert' 的定义,并且找不到接受第一个类型参数的扩展方法'Insert'(您是否缺少 using 指令或程序集引用?)

这是在使用 Razor Pages 的 ASP.NET Core 2.0 项目中。
为了完整起见,您可以在下面找到 Repository 类。
可能值得注意的是,usingDapper 和 Dapper.Contrib 的行是灰色的...
另外,当然,我有一个用于 TEST Entity 的(非常简约的)模型类,包含一个参数 ,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);
        }
    }
}
4

1 回答 1

10

Insert您正在寻找的方法存在于Dapper.Contrib.Extensions命名空间内,如源代码所示,包括在内以保持完整性:

namespace Dapper.Contrib.Extensions
{
    ...

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

    ...
}

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

using Dapper.Contrib.Extensions;
于 2018-04-26T12:21:34.883 回答