所以我有一种情况,我必须加入(并映射)超过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 ...");
}
Run Code Online (Sandbox Code Playgroud)
这种限制有什么办法吗?以前有人面对这个吗?也许一些Dapper扩展?
Hej*_*ejo 10
2014年9月,该主题有一个合并的公关:
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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |