zoukankan      html  css  js  c++  java
  • entity sql实例 ef增删改查

    1,本篇接着上篇link to sql的实例扩充entity sql.

    Entity sql
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Linq;
    using System.Xml.Linq;
    using System.Data.Objects;
    using System.Data.Common;
    
    namespace Console1
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                //创建数据库实体
                using (studentEntities stuEntity = new studentEntities())
                {
                    #region Execute方法
                    //string esql = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query = stuEntity.CreateQuery<T_StuInfo>(esql);//创建查询对象
                    //foreach (var c in query)
                    //{
                    //    Console.WriteLine(c.stuid);
                    //}
                    //ObjectResult<T_StuInfo> results = query.Execute(MergeOption.NoTracking);//执行对象查询
                    //Console.WriteLine(results.Count());              
             
                    #endregion
    
                    #region GetResultType方法:返回查询结果的类型信息
                    //string esql = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query = stuEntity.CreateQuery<T_StuInfo>(esql);
                    //Console.WriteLine(query.GetResultType().ToString());
    
                    #endregion
    
                    #region ToTraceString方法:获取当前执行的SQL语句。
                    //string esql = "select value c from studentEntities.T_StuInfo as c";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql);
                    ////使用ObjectParameter的写法
                    //query1 = query1.Where("it.stuid=@stuid"); //增加参数
                    //query1.Parameters.Add(new ObjectParameter("stuid", 4));//为参数赋值
                    ////也可以这样写
                    //ObjectQuery<T_StuInfo> query2 = stuEntity.T_StuInfo.Where("it.stuid=4");
                    //foreach (var c in query1)
                    //    Console.WriteLine(c.stuid);
                    ////显示查询执行的sql语句
                    //Console.WriteLine(query1.ToTraceString());
                    //Console.WriteLine(query2.ToTraceString());
                   
                    #endregion
    
                    #region First/ FirstOrDefault
    
                    //string esql = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query = stuEntity.CreateQuery<T_StuInfo>(esql).Where("it.stuid =4");
                    //T_StuInfo stu1 = query.First(); //如果要查询的不存在,异常:序列不包含任何元素
                    //T_StuInfo stu2 = query.FirstOrDefault();
                    //Console.WriteLine(stu1.stuid);
                    //Console.WriteLine(stu2.stuid);
     
                    #endregion
    
                    #region Distinct
                    //string esql = "select value c.name from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<string> query = stuEntity.CreateQuery<string>(esql);
                    //query = query.Distinct();
                    //foreach (string c in query)
                    //{
                    //    Console.WriteLine("姓名:{0}", c);
                    //}      
    
                    #endregion
    
                    #region  Except:返回两个查询的差集
                    //string esql1 = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    //string esql2 = "select value c from studentEntities.T_StuInfo as c where c.stuid > 8 order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query2 = stuEntity.CreateQuery<T_StuInfo>(esql2);
                    //query1 = query1.Except(query2);//将query1中的query2减去
                    //foreach(var c in query1)
                    //{
                    //    Console.WriteLine("学号:{0},姓名:{1}",c.stuid,c.name);
                    //}
                    
                    #endregion
    
                    #region Intersect:返回两个查询的交集                
                    //string esql1 = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    //string esql2 = "select value c from studentEntities.T_StuInfo as c where c.stuid < 7 order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query2 = stuEntity.CreateQuery<T_StuInfo>(esql2);
                    //query1 = query1.Intersect(query2);//创建交集
                    //foreach (var c in query1)
                    //{
                    //    Console.WriteLine(c.name);
                    //}
    
                    #endregion
    
                    #region Include:可通过此方法查询出与相关的实体对象
                    //Union/UnionAll:返回两个查询的合集,包括重复项。其中UnionAll必须是相同类型或者是可以相互转换的。
                    //string esql1 = "select value c from studentEntities.T_StuInfo as c where c.stuid = 4";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    //query1 = query1.Include("T_Class");//查询结果中包含与之相关的实体对象
                    //foreach (T_StuInfo c in query1)
                    //{
                    //    Console.WriteLine("姓名:{0},班级:{1}", c.name, c.T_Class.name);
                    //}
                    #endregion
    
                    #region orderby
                    //string esql1 = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    //query1.OrderBy("it.name asc,it.stuid asc");
                    ////也可以这样写
                    ////query1.OrderBy("it.name desc");
                    ////query1.OrderBy("it.stuid asc");
                    //foreach (var c in query1)
                    //{
                    //    Console.WriteLine("姓名:{0},学号:{1}", c.name, c.stuid);
                    //}
                    #endregion
    
                    #region  Select    SelectValue
                    //string esql1 = "select value c from studentEntities.T_StuInfo as c order by c.stuid limit 10";
                    //ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    //ObjectQuery<DbDataRecord> records = query1.Select("it.stuid,it.name");
                    //ObjectQuery<string> records2 = query1.SelectValue<string>("it.name");
                    //foreach (string c in records2)
                    //{
                    //    Console.WriteLine("{0}", c);
                    //}
                    //Console.WriteLine(records2.ToTraceString());
                   
                    
                    //foreach (DbDataRecord c in records)
                    //{
                    //    Console.WriteLine("{0},{1}", c[0], c[1]);
                    //}
                    //Console.WriteLine(records.ToTraceString());
    
                    #endregion
    
                    #region      Skip/Top
                    string esql1 = "select value c from studentEntities.T_StuInfo as c order by c.stuid";
                    ObjectQuery<T_StuInfo> query1 = stuEntity.CreateQuery<T_StuInfo>(esql1);
                    query1 = query1.Skip("it.stuid asc", "2");
                    query1 = query1.Top("10");
                    foreach (T_StuInfo c in query1)
                    {
                        Console.WriteLine("学号:{0},姓名:{1}", c.stuid, c.name);
                    }
                    Console.WriteLine(query1.ToTraceString());
                    //输出结构如下:
                    /*
                    SELECT TOP (10)
                        [Extent1].[stuid] AS [stuid],
                        [Extent1].[name] AS [name],
                        [Extent1].[phone] AS [phone],
                        [Extent1].[classid] AS [classid]
                        FROM ( 
                     SELECT [Extent1].[stuid] AS [stuid], [Extent1].[name] AS [name], [Extent1
                        ].[phone] AS [phone], [Extent1].[classid] AS [classid], row_number() OVER (ORDER
                         BY [Extent1].[stuid] ASC) AS [row_number]
                                FROM [dbo].[T_StuInfo] AS [Extent1]
                        )  AS [Extent1]
                        WHERE [Extent1].[row_number] > 2
                        ORDER BY [Extent1].[stuid] ASC
                     */
                   
    
                    #endregion
    
                    Console.WriteLine("OK");
    
    
                    Console.Read();
                }
            
    
    
            }
         
        }
    }

    2.下面是ef的增删改查

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Linq;
    using System.Xml.Linq;
    using System.Data.Objects;
    using System.Data.Common;
    using System.Data.EntityClient;
    using System.Data;
    using System.Configuration;
    
    namespace Console1
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (studentEntities stuEntity = new studentEntities())
                {
                    #region 增加:使用AddTo表(xxx)方法
                    //T_StuInfo stu1 = new T_StuInfo { name = "wangjinhe1",phone ="123456",classid = 2 };
                    //stuEntity.AddToT_StuInfo(stu1);//直接添加到表对象中
                    //int resutl1 = stuEntity.SaveChanges();//保存修改
                    //Console.WriteLine(resutl1);
    
                    //T_StuInfo stu2 = stuEntity.T_StuInfo.FirstOrDefault(c => c.name == "wangjinhe1");
                    //Console.WriteLine("id:{0},name:{1},phone:{2},classid:{3}", stu2.stuid, stu2.name, stu2.phone, stu2.classid);
    
                    #endregion
    
                    #region 增加:使用ObjectContext的AddObject(string entitySetName, object entity)
    
                    //T_StuInfo stu1 = new T_StuInfo { name = "wangjinhe2",phone ="123456",classid = 2 };
                    //stuEntity.AddObject("T_StuInfo", stu1);                
                   
                    //int resutl1 = stuEntity.SaveChanges();//保存修改
                    //Console.WriteLine(resutl1);
    
                    //T_StuInfo stu2 = stuEntity.T_StuInfo.FirstOrDefault(c => c.name == "wangjinhe2");
                    //Console.WriteLine("id:{0},name:{1},phone:{2},classid:{3}", stu2.stuid, stu2.name, stu2.phone, stu2.classid);
                    ////注意:AddObject方法中参数“entitySetName ”就是指对应实体名称,应该是:“T_StuInfo”,而不是“studentEntities.T_StuInfo”;
                    #endregion
    
                    #region 更新1:先取出来,再更新,然后保存,两次数据库连接,效率低
    
                    //T_StuInfo stu1 = stuEntity.T_StuInfo.FirstOrDefault(c => c.name == "wangjinhe1");
                    //stu1.name = "wangjinhe11"; //取出来后直接修改
                    //stu1.phone = "121212121";
                    //stu1.classid = 2;
                    //stuEntity.SaveChanges();
    
                    //T_StuInfo stu2 = stuEntity.T_StuInfo.FirstOrDefault(c => c.name == "wangjinhe11");
                    //Console.WriteLine("id:{0},name:{1},phone:{2},classid:{3}", stu2.stuid, stu2.name, stu2.phone, stu2.classid);
    
                    #endregion
    
                    #region 直接更新 :通过ObjectStateManage来控制添加、修改、删除队列以及实体的状态
    
                    //T_StuInfo stu1 = new T_StuInfo();//假设这是DTO(数据传输对象)传递过来的对象
                    //stu1.stuid = 2; //需要指明主键,否则报错
                    //stu1.name = "西门春雪";
                    //stu1.phone = "18790186666";
                    //stu1.classid = 2;
                    //stuEntity.T_StuInfo.Attach(stu1);//将对象附加到对象上下文中
                    //stuEntity.ObjectStateManager.ChangeObjectState(stu1, EntityState.Modified);//修改状态
                    //int result = stuEntity.SaveChanges();//保存到数据库,这样仅仅有一次连接数据库
                    //Console.WriteLine(result);
    
                    //stu1 = stuEntity.T_StuInfo.FirstOrDefault(c => c.stuid == 2);//取出来查看是否已经修改
                    //Console.WriteLine("学号:{0},姓名:{1},电话:{2},班级:{3}", stu1.stuid, stu1.name, stu1.phone, stu1.T_Class.name);
    
                   
    
                    #endregion
    
                    #region 删除
                    //T_StuInfo stu1 = stuEntity.T_StuInfo.FirstOrDefault(cc => cc.name == "王金河8");
                    //stuEntity.DeleteObject(stu1);//删除对象
                    //int result = stuEntity.SaveChanges();
                    //Console.WriteLine(result);
    
                    //T_StuInfo stu2 = stuEntity.T_StuInfo.FirstOrDefault(cc => cc.name == "王金河8");
                    //if (stu2 == null)
                    //{
                    //    Console.WriteLine("您查找的数据已经删除");
                    //}
                  
                    #endregion
                }
    
                #region 事务
                //studentEntities stuEntity2 = null; //数据库对象为空
                //System.Data.Common.DbTransaction tran = null; //事务对象为空
                //try
                //{
                //    stuEntity2 = new studentEntities();//新建数据库对象
                //    stuEntity2.Connection.Open();
                //    tran = stuEntity2.Connection.BeginTransaction();//开始事务
                //    T_StuInfo stu1 = stuEntity2.T_StuInfo.FirstOrDefault(cc => cc.name == "王金河7");
                //    stu1.phone = "13507611111";
                //    stu1.classid = 2;
                //    stuEntity2.SaveChanges();//保存更改
                //    tran.Commit();//提交事务
                       
                //}
                //catch(Exception ex)
                //{
                //    if (tran != null)
                //        tran.Rollback();//回滚事务
                //    throw ex;
                //}
                //finally
                //{
                //    if (stuEntity2 != null && stuEntity2.Connection.State != ConnectionState.Closed)
                //        stuEntity2.Connection.Close();
                //}           
    
                #endregion
                Console.WriteLine("OK");
    
    
                Console.Read();
    
               
    
    
            }
         
        }
    }
  • 相关阅读:
    ZOJ 3735 Cake(区间DP,最优三角剖分)
    POJ 1185 炮兵阵地 (状态压缩DP)
    POJ 3415 Common Substrings (后缀数组,长度不小于k的公共子串的个数)
    NSNumberFormatter 千分符
    遭遇String.getBytes()
    HDFS数据的Checksum
    hadoop mapreduce作业流程概论
    HDFS 安全模式
    hadoop的dfs.replication
    hadoop升级
  • 原文地址:https://www.cnblogs.com/wang7/p/2638910.html
Copyright © 2011-2022 走看看