首页 > 代码库 > EF入门

EF入门


    一,对比Linq to SQL


             最近学了两个具有ORM思想的东西,一个是Linq to SQL ,另一个是EF。。。

 

         

          

           

           

         学完之后总是从使用上感觉它们是一样的,后来自己查了查,统计了个表格:



                  

           

     

                各有优劣吧~~欢迎前来补充~~~~



     二,EF实现简单增删改查


              

  static void Main(string[] args)
        {
           




            #region 增加单个实体
                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = new T_StuInfo
                    {

                        StuNum = "01",
                        StuCardNum = "01",
                        StuName = "杰伦哥哥"

                    };  //定义一个要增加的对象

                    dbContext.T_StuInfo.Add(mystudent);//增加
                    int result = dbContext.SaveChanges();//真正写入数据库
                    Console.WriteLine(result);  //打印出1

                }
            #endregion






            #region 查询单个实体

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = dbContext.T_StuInfo.Find("01");//使用主键查找上下文跟踪的实体


                    Console.WriteLine(mystudent.StuName);  //打印出学生姓名:杰伦哥哥


                } 

            #endregion





            #region 修改单个实体

                    using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                    {
                        var mystudent = (from stu in dbContext.T_StuInfo where stu.StuName == "周杰伦" select stu).Single();
                        mystudent.StuName = "亲耐滴杰伦哥哥";
                        int result=dbContext.SaveChanges();
                        Console.WriteLine(result);  //返回1


                    } 

            #endregion





            #region  删除单个实体——使用Remorve方法

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = (from stu in dbContext.T_StuInfo where stu.StuName == "令狐冲" select stu).SingleOrDefault();

                    dbContext.T_StuInfo.Remove(mystudent);  //将实体标记为deleted
                    int result = dbContext.SaveChanges(); //将更改保存到数据库
                    Console.WriteLine(result);  //返回1


                } 


            #endregion



            //--------删除方法这样写可能有点儿效率问题:
            //要删除一个实体,只要知道它的id就ok了,但是上面
            //的方法却要先加载这个实体到内存,这是个多余的步骤,下面我们使用attach方法

            #region 删除单个实体——attach方法

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent =new  T_StuInfo 
                    {
                        StuNum ="01"
                    };

                    dbContext.T_StuInfo.Attach(mystudent);//将实体以unchanged状态附加到上下文中

                    dbContext.T_StuInfo.Remove(mystudent );  //将实体标记为deleted
                   int result= dbContext.SaveChanges();  //提交到时数据库



                    Console.WriteLine(result );  //打印出1


                } 

            #endregion





            #region 删除单个实体ExecuteSQLCommand方法
                using (var dbcontext=new SecondChargeEntities())
                {
                    dbcontext.Database.ExecuteSqlCommand("delete from T_StuInfo where StuNum='3'");
                }

            #endregion






        }




            如上DEMO,我们还是主要使用DBContext这个类的变种来实现对数据库的操作,这个东西从功能上有点儿像SQLHelper,但是从原理上看,它们还是不一样滴。

           这个上下文类利用底层的ADO.NET生成SQL代码实现对数据库的增删改查,相比以前的SQL语句,这种方法更易于写和调试,而且非常简单;并且在EF中,也可以使用linq的语句简化查询。



       








 

EF入门