gpt4 book ai didi

dapper - Dapper 如何在同名的 2 列之间进行选择

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

我有一些继承的代码,它们使用 Dapper 将 SQL SELECT 映射到对象中。 SELECT 具有多个同名列(为简洁起见,省略了一些列)。

SELECT
created_timestamp AS CreatedDate,
imported_timestamp AS CreatedDate
FROM Orders
WHERE OrderId = @OrderId

数据分析显示,每条记录仅填充 2 个 CreatedDate 列之一。运行一些测试表明 Dapper 似乎选择了非 NULL CreatedDate。我找不到任何有关 Dapper 如何处理这种情况的文档。我可以依赖 Dapper 始终选择非 NULL 值吗?

最佳答案

Dapper 是(微)ORM,它应该用于数据库 CRUD 操作。

也就是说,您的业务逻辑应该去其他地方。实现非常简单。不要创建具有重复名称的列。使用 dapper 从数据库获取数据,并在其他地方应用您的业务逻辑,例如检查 null 或 else。

//Following is query
SELECT
created_timestamp AS CreatedDate,
imported_timestamp AS ImportedDate
FROM Orders
WHERE OrderId = @OrderId

//Following is your POCO/DTO
public class Order
{
public int OrderId;//or Guid if that suits you
public string CreatedDate;//or DateTime if that suits you
public string ImportedDate;//or DateTime if that suits you
}

//Following is your business logic
Order order = orderService.GetOrder(orderId);
if(order.CreatedDate != null)
//Do something
else if(order.ImportedDate != null)
//Do something else

根据您的研究,即使 Dapper 选择非空列;在未来的版本中可能无法保证这一点。

关于dapper - Dapper 如何在同名的 2 列之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945241/

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