簡體   English   中英

Dapper Query 參數中的嵌套對象

[英]Nested objects in Dapper Query parameter

我有一個如下所示的對象,我想將它作為 Dapper 查詢的參數發送。

var person = new {
    Name = "John",
    Company = new {
        Name = "ACME"
    }
};

var res = connection.Query("select concat(@Name, @Company_Name) as concatted", person);

我的問題是@Company_Name沒有被使用。 我嘗試用@Company.Name替換它,但這給出了一個 AggregateException,一個 SystemNotSupportedException: The member Company of type ..... cannot be used as a parameter value

在查詢中使用傳遞的 param 對象的嵌套對象的正確方法是什么?

您需要匹配 param 對象中的查詢參數名稱:

 var res = conn.Query("select concat(@Name, @Company_Name) as concatted",
            new { person.Name, Company_Name = person.Company.Name });

編輯: 不,你不能像 dapper 那樣傳遞對象,因為它做了一個非常直接的 sql-param 到對象參數映射。

它必須是以下任一類型: IDynamicParametersIEnumerable<KeyValuePair<string, object>>或匿名對象,其中根據 sql 參數文字的名稱評估參數值。 請參閱https://github.com/StackExchange/Dapper/blob/a18dc63c688b5173c5dde8b1243b74e26fa262c4/Dapper/SqlMapper.cs#L2367了解其實現方式。

暫無
暫無

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

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