是否可以创建以下写入的dapper查询,其中返回类型为IEnumerable<dynamic>
因为我没有产品和供应商POCO。
IEnumerable<Product> products = sqlConnection
.Query<Product, Supplier, Product>(
@"select Products.*, Suppliers.*
from Products join Suppliers
on Products.SupplierId = Suppliers.Id
and suppliers.Id = 2",
(a, s) =>
{
a.Supplier = s;
return a;
});
如果我的sql查询是如下所示,我的dapper查询将如何与IEnumerable<dynamic>
返回类型IEnumerable<dynamic>
select Products.ProductId,Products.ProductName,Products.ProductCategory, ProductPrice.Amount,ProductPrice.Currency
from Products join ProductPrice
on Products.ProductId = ProductPrice.ProductId
所有帮助都是真诚的感谢。
谢谢
是的,您可以将查询结果映射到动态对象列表( 此处为文档)。
const string sql = @"select Products.ProductId, Products.ProductName, Products.ProductCategory, ProductPrice.Amount, ProductPrice.Currency
from Products join ProductPrice
on Products.ProductId = ProductPrice.ProductId";
IEnumerable<dynamic> products = sqlConnection.Query(sql);
在第一个示例中,您正在进行多映射 ,将每个表行映射到2个对象而不是一个( Product
和Supplier
),然后在返回产品之前通过引用进行链接。我不认为你可以用动态对象做到这一点,因为Dapper无法知道如何在它们之间划分列。您可以通过测试确认这一点,用<dynamic, dynamic, dynamic>
替换通用参数<Product, Supplier, Product>
<dynamic, dynamic, dynamic>
。
跳过多映射只意味着返回的dynamic
对象将包含Product
和Supplier
属性,这对您来说可能不是问题。