Ste*_*wen 3 .net generics asp.net-mvc c#-4.0 dapper
我正在寻找为Dapper交换一些EF代码优先的数据库请求,以加速我们网站的一些缓慢部分.我刚刚开始尝试,而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.
希望这有帮助!
| 归档时间: | 
 | 
| 查看次数: | 2743 次 | 
| 最近记录: |