gpt4 book ai didi

c# - Dapper无限多映射

转载 作者:可可西里 更新时间:2023-11-01 03:10:09 24 4
gpt4 key购买 nike

所以我有一种情况,我必须加入(和映射)超过 7 个实体(据我所知,这是 Dapper 的当前限制)。这是我到目前为止所得到的(伪代码):

using (var connection = new SqlConnection(_connectionString)) {
IEnumerable<BigEntity> results =
connection.Query<BigEntity, Lookup1, Lookup2, ... around 10 of them>(sql,
(b, l1, l2, l3) => {
// map and return here
},
splitOn: "split1, split2 ...");
}

有什么办法可以绕过这个限制吗?有人遇到过这个吗?也许是一些 Dapper 扩展?

最佳答案

从 2014 年 9 月开始有一个关于这个主题的合并 PR:

https://github.com/StackExchange/Dapper/pull/158/files

PR 添加了可以传递类型数组的方法。因此,这些方法不再存在 7 个实体的限制。

这是来自 Dapper Repo 的代码测试,展示了如何使用这些新方法之一:

public async Task TestMultiMapArbitraryWithSplitAsync()
{
const string sql = @"select 1 as id, 'abc' as name, 2 as id, 'def' as name";
var productQuery = await connection.QueryAsync<Product>(sql, new[] { typeof(Product), typeof(Category) }, (objects) => {
var prod = (Product)objects[0];
prod.Category = (Category)objects[1];
return prod;
});

var product = productQuery.First();
// assertions
product.Id.IsEqualTo(1);
product.Name.IsEqualTo("abc");
product.Category.Id.IsEqualTo(2);
product.Category.Name.IsEqualTo("def");
}

关于c# - Dapper无限多映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366172/

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