• 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模型的总结我感觉我们学习的不多,但是不知道从哪开始总结,也向更深入的了解一下,接下来还是自己查找吧,好啦,就写到这里,嘿嘿。 

    我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
  • 相关阅读:
    [禅悟人生]生活中的烦恼, 一笑了之
    [禅悟人生]开放你的胸怀, 释放自己的灵魂
    [唐诗]诗(选二首)-王梵志
    [唐诗]吾富有钱时-王梵志
    [数分提高]2014-2015-2第6教学周第2次课讲义 3.4 导数的综合应用
    [数分提高]2014-2015-2第6教学周第1次课
    [数分提高]2014-2015-2第5教学周第2次课
    [数分提高]2014-2015-2第5教学周第1次课
    [数分提高]2014-2015-2第4教学周第2次课
    [数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式
  • 原文地址:https://www.cnblogs.com/dyxd/p/4192699.html
Copyright © 2020-2023  润新知