Dapper如何在具有相同名称的2列之间进行选择

dapper

我有一些继承的代码,使用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或其他。

//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选择了非空列;在将来的版本中可能无法保证这一点。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow