NHibernate学习--初识NHibernate
要學NHibernate之前先了解一下什么是ORM
ORM(對象關系映射 Object Relational Mapping)是一種解決面向對象與關系型數據庫之間的不匹配的技術,如圖
??????
現在把Student表中的記錄全部查詢出來顯示在DataGrid表格中,步驟如下:
1.查詢Student表的全部記錄,并填充到DataTable表中
public class DBHelp{public static DataTable GetStudent(SqlConnection con){string sqlcmd = "select id,name from Student";SqlCommand cmd = new SqlCommand(sqlcmd, con);SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataTable table = new DataTable();adapter.Fill(table);return table;}}2.創建一個Student對象的集合List<Student> 來保存DataTable中的數據
public class QueryControl{public static List<Student> QueryStudent(){SqlConnection con = App.GetCon();DataTable table= DBHelp.GetStudent(con);Student stu = null;List<Student> lst = new List<Student>();//循環賦值foreach (DataRow row in table.Rows){stu = new Student();stu.Id =(int)row["Id"];stu.Name = row["Name"].ToString();lst.Add(stu);}return lst;}}3.(WPF)將這個對象綁定到DataGrid的ItemsSource
??????? XAML:
<my:DataGrid AutoGenerateColumns="False" Margin="12,12,12,93" Name="dataGrid1" ><my:DataGrid.Columns><my:DataGridTextColumn Header="Id" Width="100" Binding="{Binding Path=Id}"/><my:DataGridTextColumn Header="Name" Width="150" Binding="{Binding Path=Name}"/></my:DataGrid.Columns></my:DataGrid>按鈕代碼: List<Student> lst = QueryControl.QueryStudent();dataGrid1.ItemsSource = lst;
?
結果:
在這個過程中,程序員會把大量的時間浪費在第二步上面,就是如何把數據庫表的數據轉化為面向對象的數據表示方法,像上面的代碼那樣,如果數據庫有什么改動,那么結果就可想而知了,會牽扯到很多的代碼改動,如果數據庫表很多的話,那就更慘了.ORM的出來就是來解決這個問題的,他很好的封裝了在面向對象與關系型數據庫進行交互時的數據交換的過程,使程序員能夠更方便的進行數據交換的操作(說白了就是人家已經針對這一塊寫了通用的Dll,我們直接拿過來用就可以實現數據庫與實體類之間的數據交換).對這一塊我也很無奈,以前自己也寫了一個通用的類,做法是把實體類用反射的方法獲取一個實體類成員的數組,然后再用SQL把相關的表的字段查詢出來,然后用循環依次賦值,同時拼成sql語句,最后執行,不過最終沒用在項目里應用.
下一篇寫一個簡單的實例!!
轉載于:https://www.cnblogs.com/wangshuai/archive/2010/07/25/1784767.html
總結
以上是生活随笔為你收集整理的NHibernate学习--初识NHibernate的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCTextureCache的多线程加载
- 下一篇: TC第一次成为room leader