Dapper.Contrib 方法对 IDbConnection 对象不可用
Dapper.Contrib methods unavailable for IDbConnection object
我正在尝试使用 Dapper.Contrib 来扩展 IDbConnection
接口的功能,其中包括 .insert()
方法。
为此,我遵循了一些简短而分散的文档 here and here。简而言之,我使用 NuGet
将 Dapper
和 Dapper.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;
我正在尝试使用 Dapper.Contrib 来扩展 IDbConnection
接口的功能,其中包括 .insert()
方法。
为此,我遵循了一些简短而分散的文档 here and here。简而言之,我使用 NuGet
将 Dapper
和 Dapper.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;