gpt4 book ai didi

.net - Dapper:找不到方法: 'System.Collections.Generic.IEnumerable` 1<!!0> GridReader.Read(Boolean)'

转载 作者:行者123 更新时间:2023-12-01 09:58:14 25 4
gpt4 key购买 nike

我希望将一些 EF 代码优先的数据库请求换成 Dapper,以加快我们网站某些缓慢部分的速度。我才刚刚开始试验,Dapper 看起来还不错。

我已成功转换一些代码以使用 .Query 扩展名。但现在我尝试使用 .QueryMultiple,然后使用 .Read 扩展来获取每个结果集。

我已尝试将 Dapper 代码移动到一个新项目中,以使其远离我的 MVC 项目,并且 .Query 内容在那里很好。但是,当我尝试使用 .QueryMultiple 访问一个方法时,甚至在它到达代码中的任何断点之前我都收到了错误:

Method not found: 'System.Collections.Generic.IEnumerable`1<!!0> GridReader.Read(Boolean)'.

如果我将代码移动到 Web 项目中,它工作正常。

我不知道我需要什么或缺少什么。 Visual Studio 和 ReSharper 似乎很高兴。它正在编译。这只是一个运行时问题。这两个项目都以 .Net 4.5 为目标,都有对 Dapper 的 nuget 引用。 Dapper项目设置为Win C#类库。我查看了 SqlReader.cs 的源代码,它似乎没有任何我还没有的“使用”。 System.Collections.Generic 是自动包含的,我相信,并且在“添加引用”对话框中似乎当然无法选择。

我觉得我错过了一些非常非常明显的东西......

代码如下:

        using (var conn = new SqlConnection(ConnectionString))
{
conn.Open();

// TODO: Add in checks
const string query = @"
SELECT * FROM FileCollections WHERE Id = @fileCollectionId
SELECT * FROM Files f WHERE FileCollection_Id = @fileCollectionId
SELECT * FROM ExternalLinks WHERE FileCollection_Id = @fileCollectionId
";

// return a GridReader
using (var result = conn.QueryMultiple(query, new {fileCollectionId}))
{
var fileCollection = result.Read<FileCollection>().Single();
var files = result.Read<File>().ToList();
fileCollection.Files = files;
var externalLinks = result.Read<ExternalLink>().ToList();
fileCollection.ExternalLinks = externalLinks;
return fileCollection;
}
}

最佳答案

我遇到了完全相同的问题。我的修复是通过 Nuget 从 Dapper 1.12.1 升级到 Dapper 1.13 以使其工作。

在我的例子中,问题是我在同一个解决方案中的一个项目中使用了 Dapper 1.13,而在另一个项目中使用了 Dapper 1.12.1。

希望对您有所帮助!

关于.net - Dapper:找不到方法: 'System.Collections.Generic.IEnumerable` 1&lt;!!0> GridReader.Read(Boolean)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com