簡體   English   中英

從dapper查詢將動態轉換為對象<dynamic>

[英]Convert dynamic to object from dapper Query<dynamic>

是否可以將Dapper.Query返回的動態變量轉換為對象? 例:

class MyClass 
{
    public int Id { get; set;}
    public string SomeData { get; set; }
}

IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable");
foreach(var record in data)
{
    int parent_id = record.SomeId;
    // any simple way to fill MyClass properites from record?
    // instead of doing in manually?
    MyClass obj = ?
}

有什么簡單的方法可以從記錄中填充MyClass屬性? 而不是手動進行?

不會。不幸的是,您必須手動進行操作。 最好的辦法是將映射邏輯移到一個位置,以便可以在數據訪問層中重新使用它。 我通常使用擴展方法,但是您也可以使用反射來設置匹配的屬性名稱...但是,以我個人的觀點,我通常使用dapper來提高性能,而使用反射有點貴,因此我通常避免使用在這些情況下的反思。

是否可以將Dapper.Query返回的動態變量轉換為對象?

是。 如上所述

我知道您可能想簡化您的問題,但我想值得指出的是,如果MyClass表示該選擇查詢返回的記錄,則您發布的示例不需要返回動態對象。 您可以簡單地執行以下操作...

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM