我一直在玩這個(gè)游戲,因?yàn)樗雌饋砗芟袼涗浀奶?用戶示例,但它略有不同,對(duì)我不起作用。假定以下簡(jiǎn)化設(shè)置(聯(lián)系人具有多個(gè)電話號(hào)碼):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; }}我很樂意以返回帶有多個(gè)Phone對(duì)象的Contact的結(jié)尾。這樣,如果我有2個(gè)聯(lián)系人,每個(gè)聯(lián)系人有2部手機(jī),那么我的SQL將返回這些聯(lián)系人的聯(lián)接,結(jié)果集共有4行。然后Dapper將彈出兩個(gè)帶有兩個(gè)電話的聯(lián)系人對(duì)象。這是存儲(chǔ)過程中的SQL:SELECT *FROM Contacts LEFT OUTER JOIN Phones ON Phones.ReferenceId=Contacts.ReferenceIdWHERE clientid=1我嘗試了一下,但最終得到了4個(gè)元組(這是可以的,但是不是我想要的...這只是意味著我仍然必須對(duì)結(jié)果進(jìn)行重新規(guī)范化):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);當(dāng)我嘗試下面的另一種方法時(shí),出現(xiàn)了一個(gè)異常“無法將類型為'System.Int32'的對(duì)象轉(zhuǎn)換為類型為'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);我是在做錯(cuò)什么嗎?看起來就像帖子/所有者的示例一樣,只是我要從父級(jí)轉(zhuǎn)到子級(jí),而不是從子級(jí)轉(zhuǎn)到父級(jí)。
多映射器創(chuàng)建對(duì)象層次結(jié)構(gòu)
翻閱古今
2019-11-22 14:04:27