gpt4 book ai didi

dapper - 继承和 Dapper.net

转载 作者:行者123 更新时间:2023-12-02 00:27:22 26 4
gpt4 key购买 nike

我决定使用 Dapper.net,因为它似乎只做我想做的事情:映射,我不需要任何花哨的东西,我只是厌倦了处理我的数据读取器和我的对象之间的映射。

我的问题:

假设我有这些类(class):

class Foo{
int ID;
string Name;
}
class Bar : Foo{
string FavoriteMoovie;
}

还有这些表:

Foo 
- ID
- Name

Bar
- FooID
- FavoriteMoovie

所以我想知道如何在同一个查询中选择我的 Foo 和 Bars?

到目前为止我唯一的想法是

  • 选择所有不是 Bars 的 Foos
  • 然后选择所有条形

我不能使用“查询”方法的重载,因为这里只有映射关系。

最佳答案

非常 hacky,但这可能有效。

db.Query<Bar, object, Foo>("select * from Foo left join Bar on FooID = ID",
(bar,ignore) =>
bar.FavoriteMoovie == null ? bar : new Foo{ID = bar.ID, Name = bar.Name});

缺点是它创建了几个中间对象,如果没有它也可以。

其他选项是简单地选择 Bar 对象,然后使用相同的技巧过滤掉 Foos 或选择动态,然后转换为正确的类。

就个人而言,我不会为了处理这个问题而查询两次,除非您允许 NULL FavoriteMoovie,在这种情况下,您别无选择,只能使查询复杂化或选择两次。

关于dapper - 继承和 Dapper.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383465/

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