EF入门

来源:互联网 发布:abb robotware软件配置 编辑:程序博客网 时间:2024/04/30 18:10


    一,对比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的语句简化查询。



       








 

0 0
原创粉丝点击