【发布时间】:2013-03-26 22:15:40
【问题描述】:
我正在尝试使用 Dapper 对 SQLite 数据库执行简单的 CRUD 操作,但我遇到了麻烦,因为编译器正在指责一个我根本不知道如何修复的错误。
问题中的错误在“conn.Execute...”行中,它说:
C#: 有几种方法适用于'(string, DBManager.(anonymous))': 'Dapper.SqlMapper.Execute(System.Data.IDbConnection, string, , System.Data.IDbTransaction, int?, System.Data .CommandType?)' 和 'Dapper.SqlMapper.Execute(System.Data.IDbConnection, string, , System.Data.IDbTransaction, int?, System.Data.CommandType?)' DBManager.cs
下面是我的代码,我试着把所有我认为有用的东西放在这里,但不要放太多。
using System;
using System.Linq;
using Dapper;
public bool Insert(SchedulerHistory record)
{
int res = -1;
if (record == null)
return false;
try
{
//var db = new SQLDatabase();
string sqlquery = "insert into SchedulerHistory (JobId, NextJob, LastJob, ExecuteOnStart) Values (@JobId, @NextJob, @LastJob, @ExecuteOnStart);";
using (var conn = new System.Data.SQLite.SQLiteConnection(m_connString))
{
conn.Open();
conn.Execute (sqlquery, new { JobId = record.JobId, NextJob = `record.NextJob, LastJob = record.LastJob, ExecuteOnStart = record.ExecuteOnStart });`
return (res > 0);
}
}
catch (Exception ex)
{
LogWriter.Error(ex);
return false;
}
}
注意“使用 Dapper;”被 VS2012 标记为未使用,并且该方法尚未完成,我正在根据我之前所做的进行调整,因为我认为 dapper 会有所帮助。
【问题讨论】:
-
你确定你没有不小心将小巧的代码添加到两个不同的文件中吗?
-
您的目标是什么版本的 .NET?请注意,我们提供了 2 个版本的 dapper - 如果您有一个低级编译器,则一个版本;我想知道您是否正在使用带有上层编译器的下层 dll。
-
@KirkWoll 原来我使用的是我公司的 dll,它也使用了 dapper,但即使我删除了“使用”,错误仍然存在
-
@MarcGravell 我正在使用 .NET 4.0
-
@RaphaelLima,删除“使用”不会有帮助——大概两个版本都在同一个命名空间中。您要么想要删除贵公司使用的 dll,要么不使用您自己的版本,而仅使用贵公司使用的那个。