我认为DapperExtensions是一个非常简单的用例:
using (IDbConnection connection = Database.CreateConnection())
{
var model = connection.GetList<MyModelPoco>().ToList();
}
然而,抛出异常:
找不到方法:'System.Collections.Generic.IEnumerable 1<System.__Canon> Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object, System.Data.IDbTransaction, Boolean, System.Nullable
1,System.Nullable`1)'。
我正在为Dapper(v1.13)和DapperExtensions(v1.4.3)使用NuGet。
为什么这不起作用的任何想法?我补充说:
using Dapper;
然而,这并不影响结果。 (Resharper还抱怨说使用指令不是必需的。)
当我直接使用它时,Dapper工作正常(虽然我注意到它的使用方式与DapperExtensions不同):
using (IDbConnection connection = Database.CreateConnection())
{
var recordsets = connection.QueryMultiple("stored_procedure_name", new {parameterValue}, commandType:CommandType.StoredProcedure);
var model1 = recordsets.Read<Model1Poco>().SingleOrDefault();
if (model1 == null) return null;
model1.Model2Collection = recordsets.Read<Model2Poco>().ToList();
return model1;
}
我做了一些“谷歌搜索”,似乎达成的共识是DapperExtensions应该是一种插入和有趣的事情。
答案 0 :(得分:2)
事实证明,我的解决方案中的一个项目有一个Dapper dll的旧副本。即使我在我的项目中使用了最新版本的Dapper(来自NuGet),在构建期间部署的dll也必须是旧的。
在更新所有项目引用以使用最新的NuGet包之后,事情正在发挥作用。