標籤:
今天學習了ORM中的Entity FromWork架構,其實之前看到orm架構,感覺好高大上啊,還沒準備去瞭解它那,今天我們就學習了這個,其實ORM架構分為兩部分,Entity FromWork架構和Nhibernate;一部分是用於系統與資料庫之間的操作互動和實體類與SQL語句之間的轉換。另一部分為ORM自動產生工具,用於實體類,前台HTML代碼,商務邏輯調用代碼的自動產生。但是我們目前僅僅學習了Entity FromWork架構,下面就簡單的總結一下它的建構。
一.從資料庫映射C#項目
添加一個ADO.NET實體資料模型,然後我們根據嚮導添加完成。
下面來看下他們的內容,需要注意的有四部分,我們需要注意兩部分,分別為StudentContext.cs和Register.cs,Student.cs,在這裡說一下串連的境像:
在這裡我麼可以看到StudentEntities繼承了DbContext的串連,而DbContext存在一個方法串連我們的資料庫,參數中存在一個屬性ConnectionString,關係就是這樣的。
這裡就是一個自動對應成的實體類,和資料庫中的欄位是一樣的。
二.現在C#中建立實體,然後映射到資料庫
仍然不變的使我們要添加一個ADO.NET實體資料模型,然後建立一個空模型即可,然後添加實體,設定關係以及屬性的類型,最後選擇根據模型產生資料庫,最重要的是需要執行一個“執行”即可,這個是不能忘記的,然後我們即可把C#中的實體映射到我們的資料庫中。
在這裡,我們可以好奇為什麼它們沒有關係怎麼可以映射那,其實還是建立了SQL語句,上面就是在User.edmx.sql中尋找到的,嘿嘿,所以還不是很神奇的。被我們發現啦。在這裡需要區別的是我們從資料庫映射時間建立的是StudentEntities,而從C#映射到資料庫建立的是UserContainer,就是Entities與Container的不同,另外在建立C#映射到資料庫還建立了一個.edmx.sql,這些都是我們可以區分的地方,這就是我們建立的EF模型。
三.EF中增刪改查的語句:
static void Main(string[] args) { StudentEntities entities = new StudentEntities(); //初始化對象 Register register = new Register(); #region 增加 //register.UserName = "張三"; //register.Pwd = "123"; //register.Sex = "男"; //register.Phone = "123456"; //register.Age = "20"; //register.Address = "河南鄭州"; //entities.Register.Add(register); //添加一個集合使用Add //entities.SaveChanges(); //儲存 #endregion #region 刪除 //Register r = entities.Register.Where(i=>i.Id==39).SingleOrDefault(); //在這裡需要注意的是Lambda運算式的i屬性Register,它是一個集合,所以需要它.出來他的id項 //entities.Register.Remove(r); //刪除使用的是Remove //entities.SaveChanges(); #endregion #region 修改 //Register rr = entities.Register.Where(i => i.Id == 40).SingleOrDefault(); //修改時間記得先查詢要修改的條件 //rr.UserName = "zhangsan"; //在這裡需要注意的是接受的對象 //rr.Pwd = "456"; //rr.Sex = "女"; //rr.Phone = "123456789"; //rr.Age = "20"; //rr.Address = "北京"; //entities.SaveChanges(); //儲存 #endregion #region 查詢 //Register rrr = entities.Register.Where(i => i.Id == 41).SingleOrDefault(); //Console.WriteLine("{0},{1},{2}",rrr.Id,rrr.UserName,rrr.Pwd); //Register rrr = entities.Register.SelectMany(i=>i.Id==40&&i.Id==41).SelectMany(); #endregion Console.WriteLine("ok"); Console.ReadKey(); }
嘿嘿,這就是我們在EF模型中對資料庫操作的語句,需要注意的是,我們在執行完後記得儲存一下資料,就是目前狀態記得儲存,這個是容易忘記的,另外在這裡參數為Lambda運算式時間要準確使用。
四.實體中存在約束執行的語句
static void Main(string[] args) { UserContainer container = new UserContainer(); Tea t = new Tea(); //t.ID = 1; t.Name = "lisi"; t.Pwd = "123456"; t.Sid = 1; Stu stu = new Stu(); //stu.ID = 1; stu.Name = "zhangsan"; stu.Pwd = "123"; container.Tea.Add(t); container.Stu.Add(stu); container.SaveChanges(); Console.WriteLine("ok"); Console.ReadKey(); }
存在外鍵關係的我們需要注意的是,當我們在添加一個表的資料時,另外一個外鍵的屬性也需啊喲賦值,如果我們設定Id的屬性為自動成長,那麼我們設定的外鍵的值則每次自動成長,如果設定不變,則只需要不填寫即可。
其實這個EF模型的總結我感覺我們學習的不多,但是不知道從哪開始總結,也向更深入的瞭解一下,接下來還是自己尋找吧,好啦,就寫到這裡,嘿嘿。
EF的學習