這是一個(gè)輕量的映射工具,不可與ORM做比較。它不參與到DB。一般用來(lái)配合SqlHelper來(lái)使用。目前實(shí)現(xiàn)的功能有:DataReader到List的映射、
DataReader到T的映射、List到List的映射、T到T的映射、T到數(shù)據(jù)庫(kù)參數(shù)的映射。以上這些都是平時(shí)操作數(shù)據(jù)庫(kù)工作量最大的部分,而且都是重
復(fù)的沒(méi)有含量的工作。其實(shí)真正寫(xiě)SQL并不占用多少工作量。
???? 下面來(lái)說(shuō)下如何使用,并寫(xiě)幾個(gè)各個(gè)功能下的使用示例。
?????首先下載: Assionsoft.AssionMapper ?程序集,所有映射功能全部在這個(gè)程序集下面。不需要進(jìn)行XML的配置。
?????1、我們不采取XML配置的映射形式,而是在實(shí)體類上標(biāo)上特性的方式。通過(guò)元數(shù)據(jù)標(biāo)識(shí)映射。比如下面的學(xué)生實(shí)體:
????????[ResultsMap( " SysNo " )] // 參與集合DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ObjectMap] // 參與對(duì)象映射
????????[ParameterMap] // 參與數(shù)據(jù)庫(kù)參數(shù)映射
???????? public ? int ?SysNo?{? get ;? set ;?}
????????[ResultMap( " Name " )] // 參與單體DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ResultsMap( " Name " )] // 參與集合DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ObjectMap] // 參與對(duì)象映射
????????[ParameterMap( " Name " )] // 參與數(shù)據(jù)庫(kù)參數(shù)映射
???????? public ? string ?Name?{? get ;? set ;?}
????????[ResultMap( " Gender " )] // 參與單體DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ResultsMap( " Gender " )] // 參與集合DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ObjectMap] // 參與對(duì)象映射
????????[ParameterMap] // 參與數(shù)據(jù)庫(kù)參數(shù)映射
???????? public ? bool ?Gender?{? get ;? set ;?}
????????[ResultMap( " Age " )] // 參與單體DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ResultsMap( " Age " )] // 參與集合DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ObjectMap] // 參與對(duì)象映射
????????[ParameterMap] // 參與數(shù)據(jù)庫(kù)參數(shù)映射
???????? public ? int ?Age?{? get ;? set ;?}
????????[ResultMap( " Birthday " )] // 參與單體DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ResultsMap( " Birthday " )] // 參與集合DataReader返回映射,如果[ResultMap]無(wú)參則默認(rèn)已屬性名匹配
????????[ObjectMap] // 參與對(duì)象映射
????????[ParameterMap] // 參與數(shù)據(jù)庫(kù)參數(shù)映射
???????? public ?DateTime?Birthday?{? get ;? set ;?}
?????? 2、數(shù)據(jù)庫(kù)插入增、刪、改的參數(shù)映射,我們通過(guò)委托把Common.Parameter.AddWithValue傳給方法進(jìn)行與student的映射。
????????????SqlConnection?conn? = ? new ?SqlConnection( " server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing " );
????????????conn.Open();
????????????SqlCommand?cmd? = ? new ?SqlCommand();
????????????cmd.Connection? = ?conn;
????????????cmd.CommandText? = ? " INSERT?INTO?([Name],[Gender],[Age],[Birthday])?VALUES?(@Name,@Gender,@Age,@Birthday) " ;
????????????ParameterMap.SqlParameterMap < Student > (cmd.Parameters.AddWithValue,?student); // 生成數(shù)據(jù)庫(kù)參數(shù)
????????????cmd.ExecuteNonQuery();
????????????cmd.Parameters.Clear();
????????????conn.Close();
???????????? 3、DataReader返回集合的映射
????????????SqlConnection?conn? = ? new ?SqlConnection( " server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing " );
????????????conn.Open();
????????????SqlCommand?cmd? = ? new ?SqlCommand();
????????????cmd.Connection? = ?conn;
????????????cmd.CommandText? = ? " SELECT?[SysNo],[Name],[Gender],[Age],[Birthday]?FROM?Student?ORDER?BY?[SysNo]?DESC " ;
????????????SqlDataReader?dataReader? = ?cmd.ExecuteReader();
????????????studentList? = ?ResultMap.GetIList < Student > (dataReader); // 從DataReader返回實(shí)體集合
????????????dataReader.Close();
????????????conn.Close();
?????????????? 4、DataReader 返回實(shí)體的映射
????????????SqlConnection?conn? = ? new ?SqlConnection( " server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing " );
????????????conn.Open();
????????????SqlCommand?cmd? = ? new ?SqlCommand();
????????????cmd.Connection? = ?conn;
????????????cmd.CommandText? = ? " SELECT?[SysNo],[Name],[Gender],[Age],[Birthday]?FROM?Student?WHERE?[SysNo]=@SysNo " ;
????????????ParameterMap.SqlParameterMap < Student > (cmd.Parameters.AddWithValue,?student);
????????????SqlDataReader?dataReader? = ?cmd.ExecuteReader();
????????????student? = ?ResultMap.Load < Student > (dataReader); // 從DataReader返回單個(gè)實(shí)體
????????????dataReader.Close();
????????????conn.Close();
??????????????? 5、集合TO 集合的映射
????????????IList < Student > ?studentResultList? = ? new ?List < Student > ();
????????????studentResultList? = ?ResultMap.GetIList < Student,?Student > (studentList); // 從集合返回集合
???????????????? 6、實(shí)體TO 實(shí)體的映射
????????????Student?studentResult? = ? new ?Student();
????????????studentResult? = ?ResultMap.Load < Student,?Student > (student); // 從實(shí)體返回實(shí)體
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
