将 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&lt;System.__Canon&gt; Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object, System.Data.IDbTransaction, Boolean, System.Nullable1, 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实现简单仓储

DapperExtensions 怎么才能获取它生成的Sql语句

如何将 get_it 用于 Provider.of<ExampleProvider>(context)?

如何将生成的 Oauth 1.0 标头用于 GET 请求?

将“push_back”用于带有“get”函数C++的向量

get和post的区别