将 DapperExtensions 用于“GetList”时引发异常
Posted
技术标签:
【中文标题】将 DapperExtensions 用于“GetList”时引发异常【英文标题】:Exception thrown when using DapperExtensions to "GetList" 【发布时间】:2014-02-18 19:01:01 【问题描述】:我认为 DapperExtensions 有一个非常简单的用例:
using (IDbConnection connection = Database.CreateConnection())
var model = connection.GetList<MyModelPoco>().ToList();
但是,抛出异常:
找不到方法:'System.Collections.Generic.IEnumerable1<System.__Canon> Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object, System.Data.IDbTransaction, Boolean, System.Nullable
1, System.Nullable`1)'。
我将 NuGet 用于 Dapper (v1.13) 和 DapperExtensions (v1.4.3)。
任何想法为什么这不起作用?我补充说:
using Dapper;
但是,这并不影响结果。 (Resharper 还抱怨说 using 指令是不必要的。)
当我直接使用 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 应该是一种简单而有趣的东西。
【问题讨论】:
【参考方案1】:事实证明,我的解决方案中的一个项目具有 Dapper dll 的旧副本。即使我在项目中使用的是最新版本的 Dapper(来自 NuGet),但在构建期间部署的 dll 肯定是旧版本。
更新所有项目引用以使用最新的 NuGet 包后,一切正常。
【讨论】:
以上是关于将 DapperExtensions 用于“GetList”时引发异常的主要内容,如果未能解决你的问题,请参考以下文章
DapperExtensions 怎么才能获取它生成的Sql语句