gpt4 book ai didi

dapper - Slapper.Automapper 与 Dapper.net 使用 Guid Id

转载 作者:行者123 更新时间:2023-12-02 02:49:17 28 4
gpt4 key购买 nike

我需要使用 Dapper.net 将一对多扁平化 SQL 查询映射到嵌套对象中。

Slapper.Automapper 似乎是一个很好的方法;正如这个问题的答案中所详细说明的:

How do I write one to many query in Dapper.Net?

我使用Guids得到的错误数据集: enter image description here

public string MrFlibble3()
{
using (var connection = new SqlConnection(Constr))
{
Slapper.AutoMapper.Cache.ClearInstanceCache();

const string sql = @"SELECT tc.[IDG] as ContactIdg
,tc.[ContactName] as ContactName
,tp.[Idg] AS TestPhones_PhoneIdg
,tp.[ContactIdg] AS TestPhones_ContactIdg
,tp.[Number] AS TestPhones_Number
FROM TestContact tc
INNER JOIN TestPhone tp ON tc.Idg = tp.ContactIdg";

// Step 1: Use Dapper to return the flat result as a Dynamic.
dynamic test = connection.Query<dynamic>(sql);

// Step 2: Use Slapper.Automapper for mapping to the POCO Entities.
// - IMPORTANT: Let Slapper.Automapper know how to do the mapping;
// let it know the primary key for each POCO.
// - Must also use underscore notation ("_") to name parameters;
// see Slapper.Automapper docs.
Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(TestContact), new List<string> { "ContactIDg" });
Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(TestPhone), new List<string> { "PhoneIdg" });

var testContact = (Slapper.AutoMapper.MapDynamic<TestContact>(test) as IEnumerable<TestContact>).ToList();

string flibblethis = "";

foreach (var c in testContact)
{
foreach (var p in c.TestPhones)
{
// Console.Write("ContactName: {0}: Phone: {1}\n", c.ContactName, p.Number);
flibblethis += "Contact Name: " + c.ContactName + ". Number: " + p.Number + "<br />";
}
}

return flibblethis;
}
}

它在示例中运行良好 - 但如果 Id 是 Guid 而不是整数,Slapper.Automapper 似乎不起作用。

是否有任何方法可以将 Guid ID 与 Slapper.Automapper 一起使用 - 或者是否有其他方法可以使用 Dapper.net 进行映射?

(Slapper.Automapper 并未广泛使用,我在网上找不到任何有关此问题的信息)。

最佳答案

您的属性名称中的大小写不同,例如ContactIdgContactIDg。 Slapper 区分大小写映射,请参阅 this issue .

关于dapper - Slapper.Automapper 与 Dapper.net 使用 Guid Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39989378/

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