为嵌套对象编写简洁的查询

发布于 2024-11-09 22:04:06 字数 486 浏览 0 评论 0原文

我的代码结构如下:

class Person
{
    Name PersonName;
    int Age;
}

class Name
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

这是我的存储过程,它填充数据库中的数据。

Create Procedure SpGetAllPersons
As
Select FirstName, LastName, Age from Persons

如何编写 Dapper 查询来从数据库中提取所有人员?

示例:

列表<人员> Persons = DbConn.Query("SpGetAllPersons", CommandType.StoredProcedure);

I have a code Structure as below:

class Person
{
    Name PersonName;
    int Age;
}

class Name
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

Here is my Stored Proc which populates the data from Database.

Create Procedure SpGetAllPersons
As
Select FirstName, LastName, Age from Persons

How do I write Dapper query which pulls all the Person from Database?

Example:

List<Person> Persons = DbConn.Query<Person>("SpGetAllPersons", CommandType.StoredProcedure);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尬尬 2024-11-16 22:04:06

如果要选择嵌套对象,则需要使用多重映射器。

这应该可行:

List<Person> persons = DbConn.Query<Name,Person,Person>
  ("SpGetAllPersons",
     (name,person) => {person.Name = name; return person;} 
     commandType: CommandType.StoredProcedure, 
     splitOn: "Age");

多重映射器可以返回任何类型,甚至只是未映射到任何数据库表的聚合类型。

如果您打算拆分任何不名为 idId 的内容,则提供 splitOn 参数非常重要。

You need to use the multi mapper if you want to select nested objects.

This should work:

List<Person> persons = DbConn.Query<Name,Person,Person>
  ("SpGetAllPersons",
     (name,person) => {person.Name = name; return person;} 
     commandType: CommandType.StoredProcedure, 
     splitOn: "Age");

The multi-mapper can return any type, even just an aggregate type that is not mapped to any db table.

It is important to supply the splitOn param if you intend to split on anything that is not called id or Id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文