Dapper連結查詢擴充

來源:互聯網
上載者:User

標籤:

一對多映射關係

 /// <summary>        /// 一對多串連查詢        /// </summary>        /// <typeparam name="FirstT">主鍵表實體類型</typeparam>        /// <typeparam name="SecondT">外鍵表實體類型</typeparam>        /// <typeparam name="ReturnT">返回的實體類型(一般如果實體中存在映射關係的時候傳回型別與主鍵表類型基本相同)</typeparam>        /// <param name="sqlStr">串連查詢的sql</param>        /// <param name="ForeignKeyName">主鍵表實體中的的外鍵表集合名稱</param>        /// <param name="Name">外鍵表中的外鍵名</param>        /// <returns></returns>        public static List<FirstT> SelectOneToMore<FirstT, SecondT, ReturnT>(string sqlStr, string ForeignKeyName, string Name) where FirstT : IDataEntity, new()        {            using (var conn = ConnectionFactory.Connection)            {                List<FirstT> list = new List<FirstT>();                var lookUp = new Dictionary<int, FirstT>();                list = conn.Query<FirstT, SecondT, FirstT>(sqlStr,                    (firstT, secondT) =>                    {                        FirstT t;                        if (!lookUp.TryGetValue(firstT.ID, out t))                        {                            lookUp.Add(firstT.ID, t = firstT);                        }                        foreach (var item in firstT.GetType().GetProperties())                        {                            if (item.Name == ForeignKeyName)                            {                                var a = item.GetValue(firstT, null) as HashSet<SecondT>;                                a.Add(secondT);                            }                        }                        //t.GetType().GetMember(ForeignKeyName)                        return firstT;                    }, null, null, true, Name, null, null).ToList();                return list;            }        }

一對一映射關係

 /// <summary>        /// 一對一連結查詢        /// </summary>        /// <typeparam name="FirstT">主鍵表類型</typeparam>        /// <typeparam name="SecondT">外鍵表類型</typeparam>        /// <typeparam name="ReturnT">傳回值類型</typeparam>        /// <param name="sqlStr">sql</param>        /// <param name="ForeignKeyName">主鍵表實體中的的外鍵表集合名稱</param>        /// <param name="Name">外鍵表中的外鍵名</param>        /// <returns></returns>        public static List<FirstT> SelectOneToOne<FirstT, SecondT, ReturnT>(string sqlStr, string ForeignKeyName, string Name)            where FirstT : IDataEntity, new()            where SecondT : class,IDataEntity, new()        {            using (var conn = ConnectionFactory.Connection)            {                List<FirstT> list = new List<FirstT>();                var lookUp = new Dictionary<int, FirstT>();                list = conn.Query<FirstT, SecondT, FirstT>(sqlStr,                    (firstT, secondT) =>                    {                        foreach (var item in firstT.GetType().GetProperties())                        {                            if (item.Name == ForeignKeyName)                            {                                item.SetValue(firstT, item.GetValue(firstT, null));                            }                        }                        //t.GetType().GetMember(ForeignKeyName)                        return firstT;                    }, null, null, true, Name, null, null).ToList();                return list;            }        }

 

Dapper連結查詢擴充

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.