针对实体编程不针对数据库编程 -EF里的增删改查

因为EF对对象的增删改查,都是由ef数据上下文对象来完成的,所以只有这个对象存在于ef数据上下文中,并且,只有此对象被标记为修改状态,修改过得属性值被标记为修改状态,才能被修改。

 

    

  1.         /// <summary>
            /// 添加单个实体
            /// </summary>
            public static void AddUser()
            {
                using (EFEntities db = new EFEntities())
                {
                    User u = new User() { RoleID = 1, UserID = 4, UserName = "1", UserPassword = "1" };
                    db.Users.Add(u);//生成SQL语句
                    db.SaveChanges();//查询语句真正执行
                }
            }

  2.         /// <summary>
            /// 删除单个实体
            /// </summary>
            public static void DeleteUser()
            {
                using (EFEntities db = new EFEntities())
                {
                    User u = new User() { RoleID = 1, UserID = 4, UserName = "1", UserPassword = "1" };
    
                    //也可以使用entry来附加和修改
                    DbEntityEntry<User> entry = db.Entry<User>(u);
                    entry.State = System.Data.EntityState.Deleted;//标记此对象在上下文中的状态
                    db.Users.Remove(u);
                    db.SaveChanges();//查询语句真正执行
                }
            }

  3.   /// <summary>
            /// 修改实体,先查询后修改
            /// </summary>
            public static void ModifyUser()
            {
                using (EFEntities db = new EFEntities())
                {
                    User u1 = db.Users.Where(u => u.UserID == 4).FirstOrDefault( );
    
                    u1.UserName = "刘颖";
    
                    db.SaveChanges();
                }
    
            }

  4. ef优点:延迟查询,按需加载

    1. 延迟查询:查询语句的是否已经完整的问题
    2. 按需加载:只有真正需要查询返回值的时候,才真正执行查询语句
            /// <summary>
            /// 查询单个实体
            /// </summary>
            /// <returns></returns>
            public static User QueryUser()
            {
                using (EFEntities db = new EFEntities())
                {
                    //查询语句并没有真正执行,在这里只是进行的是SQL语句的拼接
                    DbQuery<User> query = db.Users.Where(u => u.UserID > 1).OrderBy(u => u.UserName).Take(2) as DbQuery<User>;
    
    
                    User u1 = query.FirstOrDefault();//语句真正执行
    
                    return u1;
                }
            }
    哦,现在才发现EF里用的都是linq语句,所以下一篇博客总结一下最近学的LINQ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值