【发布时间】:2018-10-06 23:42:01
【问题描述】:
我正在尝试使用Dapper.Contrib 来扩展IDbConnection 接口的功能,其中包括.insert() 方法。
为此,我遵循了一些简短而分散的文档here 和here。简而言之,我使用NuGet 将Dapper 和Dapper.Contrib 添加到我的项目中,我在我的Repository 类的顶部添加了using Dapper; 和using Dapper.Contrib;,我正在使用System.Data.SqlClient.SqlConnection() 创建一个IDbConnection.
不过,我的连接对象没有可用的扩展方法。例如,当尝试使用 .insert() 方法时,我收到以下消息:
'IDbConnection' C# 不包含“插入”的定义,并且没有 接受类型的第一个参数的扩展方法“插入”可以是 找到(您是否缺少 using 指令或程序集引用?)
这是在使用 Razor 页面的 ASP.NET Core 2.0 项目中。
为了完整起见,您可以在下面找到 Repository 类。
可能有趣的是,Dapper 和 Dapper.Contrib 的 using 行显示为灰色...
另外,当然,我有一个用于测试实体的(非常简约的)模型类,其中包含一个参数 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);
}
}
}
【问题讨论】:
-
你有没有用 [Table("Tests")] 装饰你的 TEST 类?
-
@PalleDue :虽然这不是我当前问题的原因,但它是下一个问题;)在我的用例中,对象/表并不是真的称为“测试”,我只是将问题归结为使问题更通用,但您的评论仍然是相关的。所以谢谢。
标签: asp.net razor asp.net-core dapper dapper-contrib