EF的學習


               今天學習了ORM中的Entity FrearmeWork框架,其實之前看到orm框架,感覺好高大上啊,還沒准備去了解它那,今天我們就學習了這個,其實Entity FrearmeWork框架和Nhibernate實現ORM的兩套方案,一是用於系統與數據庫之間的操作交互和實體類與SQL語句之間的轉換。另一個為ORM自動生成工具,用於實體類,前台HTML代碼,業務邏輯調用代碼的自動生成。但是我們目前僅僅學習了Entity FrearmeWork框架,下面就簡單的總結一下它的建構。

         一.從數據庫映射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模型的總結我感覺我們學習的不多,但是不知道從哪開始總結,也向更深入的了解一下,接下來還是自己查找吧,好啦,就寫到這里,嘿嘿。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM