gpt4 book ai didi

dapper - Dapper 的简单内连接结果?

转载 作者:行者123 更新时间:2023-12-03 08:41:04 25 4
gpt4 key购买 nike

我似乎找不到我的问题的文档或示例(现在已经搜索了一段时间)。我认为我的问题很简单,所以这里是。

我有两张 table 。我的主表称为 Persons,辅助表是 PersonEntries。对于 Person 表中的每个人,我可以在 PersonEntries 表中有 0 个或多个条目。像这样。

Table: Person
Id
Name

Table: PersonEntry
PersonId
CheckinTime
CheckoutTime

我有两个这样的对象
public class Person {
public string Name;
public List<PersonEntry> PersonEntries;
}

public class PersonEntry {
public DateTime CheckinTime;
public DateTime CheckoutTime;
}

如果我要将它从数据库中获取到我的 c# 类中,我会怎么做?我可以将单个表映射到我的 c# 类中并为每个表执行此操作,但随后我要匹配哪些条目映射到哪个人。

我见过几个将 ONE PersonEntry 映射到 ONE Person 的例子,这里的问题是我有一个零对多的关系。我的人有一个 列表 PersonEntry 项。

最佳答案

你可以做这样的事情(见 https://www.tritac.com/blog/dappernet-by-example ):

public class Shop {
public int? Id {get;set;}
public string Name {get;set;}
public string Url {get;set;}
public IList<Account> Accounts {get;set;}
}

public class Account {
public int? Id {get;set;}
public string Name {get;set;}
public string Address {get;set;}
public string Country {get;set;}
public int ShopId {get;set;}
}

var lookup = new Dictionary<int, Shop>()
conn.Query<Shop, Account, Shop>(@"
SELECT s.*, a.*
FROM Shop s
INNER JOIN Account a ON s.ShopId = a.ShopId
", (s, a) => {
Shop shop;
if (!lookup.TryGetValue(s.Id, out shop)) {
lookup.Add(s.Id, shop = s);
}
if (shop.Accounts == null)
shop.Accounts = new List<Account>();
shop.Accounts.Add(a);
return shop;
}
).AsQueryable();
var resultList = lookup.Values;

关于dapper - Dapper 的简单内连接结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20492071/

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