我一直在玩這個游戲,因為它看起來很像所記錄的帖子/用戶示例,但它略有不同,對我不起作用。假定以下簡化設置(聯系人具有多個電話號碼):public class Contact{ public int ContactID { get; set; } public string ContactName { get; set; } public IEnumerable<Phone> Phones { get; set; }}public class Phone{ public int PhoneId { get; set; } public int ContactID { get; set; } // foreign key public string Number { get; set; } public string Type { get; set; } public bool IsActive { get; set; }}我很樂意以返回帶有多個Phone對象的Contact的結尾。這樣,如果我有2個聯系人,每個聯系人有2部手機,那么我的SQL將返回這些聯系人的聯接,結果集共有4行。然后Dapper將彈出兩個帶有兩個電話的聯系人對象。這是存儲過程中的SQL:SELECT *FROM Contacts LEFT OUTER JOIN Phones ON Phones.ReferenceId=Contacts.ReferenceIdWHERE clientid=1我嘗試了一下,但最終得到了4個元組(這是可以的,但是不是我想要的...這只是意味著我仍然必須對結果進行重新規范化):var x = cn.Query<Contact, Phone, Tuple<Contact, Phone>>("sproc_Contacts_SelectByClient", (co, ph) => Tuple.Create(co, ph), splitOn: "PhoneId", param: p, commandType: CommandType.StoredProcedure);當我嘗試下面的另一種方法時,出現了一個異?!盁o法將類型為'System.Int32'的對象轉換為類型為'System.Collections.Generic.IEnumerable'1 [Phone]'”。var x = cn.Query<Contact, IEnumerable<Phone>, Contact>("sproc_Contacts_SelectByClient", (co, ph) => { co.Phones = ph; return co; }, splitOn: "PhoneId", param: p, commandType: CommandType.StoredProcedure);我是在做錯什么嗎?看起來就像帖子/所有者的示例一樣,只是我要從父級轉到子級,而不是從子級轉到父級。
添加回答
舉報
0/150
提交
取消