Dapperが同じ名前の2つの列を選択する方法

dapper

質問

Dapperを使用してSQL SELECTをオブジェクトにマップする継承されたコードがいくつかあります。 SELECTには同じ名前の複数の列があります(簡略化のため、一部の列は省略されています)。

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

データの分析では、2つのCreatedDate列のうちの1つのみが各レコードに取り込まれることが示されています。いくつかのテストを実行すると、DapperはNULLでないCreatedDateを選択しているようです。 Dapperがこのような状況をどのように処理しているかに関するドキュメントは見つかりませんでした。 Dapperが常に非NULL値を選択することに頼ることはできますか?

人気のある回答

Dapperは(マイクロ)ORMであり、データベースのCRUD操作に使用する必要があります。

つまり、ビジネスロジックはどこか別のものになるはずです。実装は非常に簡単です。名前が重複する列は作成しないでください。 dapperを使用してデータベースからデータを取得し、その他の場所でビジネスロジックを適用します。

//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