【原】EF简单使用

/// <summary>
        /// 数据上下文对象
        /// </summary>
      static  TestEntities te = new TestEntities();
static void Main(string[] args)
        {
           
            执行方法();
          
            Console.ReadKey();
        }

#region 新增
        static void Add()
        {
            //创建实体对象
            User uObj = new User() { UName = "刘涛", UPwd = "testpwd" };
            //通过EF新增到数据库中
            //将对象加入到数据上下文的users集合中
            te.Users.Add(uObj);
            //调用 数据上下文的保存方法,将对象存储到数据库中
            te.SaveChanges();
            Console.WriteLine("保存成功!");
        } 
        #endregion
#region 即时查询
        static void Query()
        {
            List<User> list = te.Users.Where(u => u.UName == "刘涛"&&u.Uids==3).ToList();
            list.ForEach(u => Console.WriteLine(u.ToString()));
        }  
        #endregion
#region 延时查询
        static void Query1()
        {
            
            //集合的标准查询运算符方法,是来自于System.Linq.Enumerable里给IEnumerable接口添加的扩展方法
            //EF上下文里的DBSet<T>里的标准查询运算符来自于System.Linq.Queryabl给IQueryable接口添加的扩展方法;
            //延时加载
            //System.Data.Entity.Infrastructure.DbQuery<User> i = te.Users.Where(u => u.UName == "刘涛").OrderByDescending(u => u.UPwd) as System.Data.Entity.Infrastructure.DbQuery<User>;
            //User user1 = i.FirstOrDefault();
            //延迟加载,针对于外键实体的延迟
            IQueryable<UsersDetail> address = te.UsersDetails.Where(a => a.udUid == 2);
            //此时只查询了地址表
            UsersDetail addr01 = address.FirstOrDefault();
            //查询了地址对应的用户表
            Console.WriteLine(addr01.User.UName);
            //按需加载的缺点,数据量大的时候会为每次调用外键实体时,都会去查询数据库,EF有小优化:相同的外键实体,只查一次;
            IQueryable<UsersDetail> addrs = te.UsersDetails;
            foreach (UsersDetail item in addrs)
            {
                Console.WriteLine(item.udAddress+":userName="+item.User.UName);
            }


           // Console.WriteLine(user1.UPwd.ToString());
           
        }   
        #endregion
#region 修改
        static void Edit()
        {
            //查询出一个要修改的对象
            User usr = te.Users.Where(u => u.Uids == 1).FirstOrDefault();
            //修改内容
            Console.WriteLine("修改前" + usr.ToString());
            usr.UName = "测试修改";
            //重新保存到数据库
            te.SaveChanges();
            Console.WriteLine("修改后" + usr.ToString());
            Console.WriteLine("修改内容成功!");
        } 
        #endregion
 #region 删除
        static void Delete()
        {
            //创建要删除的对象
            User u = new User();
            u.Uids = 1;
            //附加到EF中
            te.Users.Attach(u);
            //标记为删除
            te.Users.Remove(u);
            //执行删除SQL
            te.SaveChanges();
            Console.WriteLine("删除成功!");
        } 
        #endregion

 

posted @ 2015-05-29 23:51  哥本哈根  阅读(221)  评论(0编辑  收藏  举报