gpt4 book ai didi

c# - 将 Dapper 查询映射到对象集合(它本身有几个集合)

转载 作者:太空狗 更新时间:2023-10-29 22:33:37 26 4
gpt4 key购买 nike

我想执行单个查询(或具有多个结果集的存储过程)。我知道如何使用 Dapper 进行多重映射,但我不知道如何将两个集合映射到同一个父集合。基本上,给定此对象定义...

class ParentObject
{
string Name { get; set; }
ICollection<ChildObjectOne> ChildSetOne {get;set;}
ICollection<ChildObjectTwo> ChildSetTwo { get; set; }
}

class ChildObjectOne
{
string Name { get; set; }
}

class ChildObjectTwo
{
int id { get; set; }
string LocationName { get; set; }
}

我希望能够运行以某种方式产生的 Dapper 查询:

IQueryable<ParentObject> result = cnn.Query(
// Some really awesome dapper syntax goes here
);

最佳答案

不确定您是否不想使用 MultiMapping,但以下是它如何适用于您的情况。据我所知和阅读 SO,不可能用简单的 Query 映射深层嵌套对象图。

 static void Main(string[] args)
{
var sqlParent = "SELECT parentId as Id FROM ParentTable WHERE parentId=1;";
var sqlChildOneSet = "SELECT Name FROM ChildOneTable;"; // Add an appropriate WHERE
var sqlChildTwoSet = "SELECT Id, LocationName FROM ChildTwoTable;"; // Add an appropriate WHERE

var conn = GetConnection() // whatever you're getting connections with
using (conn)
{
conn.Open();
using (var multi = conn.QueryMultiple(sqlParent + sqlChildOneSet + sqlChildTwoSet))
{
var parent = multi.Read<ParentObject>().First();
parent.ChildSetOne = multi.Read<ChildOne>().ToList();
parent.ChildSetTwo = multi.Read<ChildTwo>().ToList();
}
}
}

嵌套对象和 dapper 的类似问题:

https://stackoverflow.com/search?q=nested+objects+%2B+dapper

关于c# - 将 Dapper 查询映射到对象集合(它本身有几个集合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515005/

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