c # Dapper - ใช้ linq ในวิธี QueryAsync

Sep 01 2020

เหตุใดฉันจึงไม่สามารถใช้. select on a queryAsync ได้เมื่อมันทำงานได้ดีกับ Query? ตัวอย่างเช่นที่นี่. select ตะโกนใส่ฉันบอกฉันว่ามันไม่สามารถแก้ไขสัญลักษณ์ "เลือก":

var result = await sqlConnection.QueryAsync<Product>(procedure,
                            commandType: CommandType.StoredProcedure).Select(p => new Product
                        {
                            Code= (string)p.fldCode,
                            Name=(string)p.fldName
                            });

แต่ทันทีที่ฉันเปลี่ยนเป็น Query มันก็ไม่ตะโกนอีกต่อไป หากมีปัญหาในการแก้ไขคอลัมน์ fldCode จาก sp:

 var result = sqlConnection.Query<Product>(procedure,
                                commandType: CommandType.StoredProcedure).Select(p => new Product
                            {
                                Code= (string)p.fldCode,
                                Name=(string)p.fldName
                                });

ทำไมถึงเป็นเช่นนี้?

ฉันถามคำถามก่อนหน้านี้ที่นี่C # Dapper การแมปคอลัมน์กับคุณสมบัติเอนทิตี - "ไม่สามารถแก้ไขสัญลักษณ์ 'เลือก'"

คำตอบ

1 Milney Sep 01 2020 at 09:06

วิธีการ Async ส่งคืนงาน (โดยทั่วไปจะเป็นตัวยึดสำหรับผลลัพธ์สุดท้ายของการดำเนินการ async) คุณต้องรอเพื่อให้ได้มูลค่าที่แท้จริง

var result = (await sqlConnection.QueryAsync<Product>(
                 procedure,
                 commandType: CommandType.StoredProcedure
             )).Select(p => new Product
                {
                    Code= (string)p.fldCode,
                    Name=(string)p.fldName
                 }
             );