如何用Dapper通过特定的列值示例化类?
假设我们有一个包含列的表'items':ID、类型、名称...
并且,当Type等于“Burger”时,类Burger应该被示例化,当Type等于“Sandwich”时,类Sandwich应该被示例化.
我想到的第一个方法是对每种类型执行查询,例如:
var sandwiches = conn.Query<Sandwich>("SELECT * FROM items WHERE Type = 'Sandwich'");
var burgers = conn.Query<Burger>("SELECT * FROM items WHERE Type = 'Burger'");
但这种方法是昂贵的,因为我们将有尽可能多的查询项目类型的数量。我们可以做同样的工作与单一查询?(选择所有行和创建示例的基础上列值)
2条答案
按热度按时间cunj1qz11#
一个类可以有一个泛型方法来做你想做的事情:
现在你可以这样称呼它
2jcobegt2#
使用方法的泛型参数获取类型
现在可以为任何项类型调用方法
V2(选择所有项目):use可以执行类似这样的操作,或者强制转换为基接口(如果存在)。