gpt4 book ai didi

c# - Dapper 映射结果列表

转载 作者:行者123 更新时间:2023-11-30 21:40:48 25 4
gpt4 key购买 nike

我的存储过程返回一个用户列表以及关系表中的组织详细信息。

我已使用 dapper 在我的 C# Web API 应用程序中执行存储过程。

我是 dapper 的新手。如何将存储过程返回的结果映射到我的模型?

存储过程

CREATE PROCEDURE [dbo].[GetAllUsersByOrganisation]
@OrganisationId int = 0

AS
SELECT * from dbo.Users u
inner join dbo.Organisations org on u.OrganisationId = org.Id
Where u.OrganisationId = @OrganisationId

执行方法

public List<User> GetUseryOrganisation(int organisationId)
{
var users = DataContextFactory.GetConnectionString(_settings)
.Execute("dbo.GetAllUsersByOrganisation", new {OrgantisationId = organisationId},
commandType: CommandType.StoredProcedure);

// Map to return List of User
}

模型

 public class User
{
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public Organisation Organisation { get; set; }
}

public class Organisation
{
public int Id { get; set; }
public string Name { get; set; }
}

最佳答案

您应该使用 Query 重载,它期望返回的记录集中有两种类型(用户数据和组织数据),然后将组织数据分配给用户实体:

var users = DataContextFactory.GetConnectionString(_settings)
.Query<User, Organisation, User>(
"dbo.GetAllUsersByOrganisation",
(u,o) => { u.Organisation = o; return u; }, // map function
new {OrgantisationId = organisationId},
commandType: CommandType.StoredProcedure);

return users.ToList();

关于c# - Dapper 映射结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243186/

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