• 【EF学习笔记04】----------EF简单增删改查


    第一步:创建上下文对象

    using(var db = new Entities())
    {
        //数据操作
    }

    新增

        UserInfo user = new UserInfo()
        {
            UserName = "zhangsan1",
            UserPass = "123123"
        };
        db.UserInfo.Add(user);

    删除

        user = new UserInfo()
        {
            UserID = 4, //根据主键删除
            UserName = "zhangsan",
            UserPass = "12312311111"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Deleted;

    说明:此例中虽然指定了UserName和UserPass属性值,但是EF执行的时候只会根据主键UserID生成查询条件,所以只需要制定UserID即可。

    删除 方法2

        user = new UserInfo()
        {
            UserID = 13 //根据主键删除
        };
        //Attach的实体事先不能已经在内存中,否则上下文会追踪到两个相同键名的实体
        db.UserInfo.Attach(user);//将对象添加到EF管理容器中 ObjectStateManager
        db.UserInfo.Remove(user);//将对象包装类状态标识为删除

    删除 先查询-再删除

        //先加载整个实体 再删除 执行了2次sql 效率略低 
        using (var db = new Entities())
        {
            var user = (from v in db.UserInfo
                        where v.UserID == 14
                        select v).Single();
            db.UserInfo.Remove(user);
            db.SaveChanges();
        }

    修改

        user = new UserInfo()
        {
            UserID = 12,
            UserName = "zhangsan",
            UserPass = "987654"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Modified;

    修改单个属性

        user = new UserInfo()
        {
            UserID = 12,
            UserName = "zhangsan"
        };
        db.UserInfo.Attach(user);
        db.Entry<UserInfo>(user).Property<string>(v => v.UserName).IsModified = true;

    说明:将UserID=12的用户名称改为 zhangsan

    修改单个实体 先查询-再修改

        using (var db = new Entities())
        {
            var user = (from v in db.UserInfo
                        where v.UserName == "zhangsan"
                        select v).Single();
            user.UserPass = "123456";
            db.SaveChanges();
        }

    说明:将用户名为 zhangsan的用户 密码修改为:123456

    查询所有实体

        var users = db.UserInfo;
        foreach (var v in users)
        {
            ObjectDumper.Write(v);//打印实体
        }

    查询单个实体 主键查询

        using (var db = new Entities())
        {
            var user = db.UserInfo.Find(12);
            ObjectDumper.Write(user);
        }

    说明:查询UserID=12的用户

    备注:所有增删改操作都需要调用 db.SaveChanges() 方法,才能更新到数据库。

    完整案例:

    using(var db = new Entities())
    {
        //新增
        UserInfo user = new UserInfo()
        {
            UserName = "zhangsan1",
            UserPass = "123123"
        };
        db.UserInfo.Add(user);
                    
        //删除
        user = new UserInfo()
        {
            UserID = 4, //根据主键删除
            UserName = "zhangsan",
            UserPass = "12312311111"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Deleted;
    
        //删除 方法2
        user = new UserInfo()
        {
            UserID = 13 //根据主键删除
        };
        //Attach的实体事先不能已经在内存中,否则上下文会追踪到两个相同键名的实体
        db.UserInfo.Attach(user);//将对象添加到EF管理容器中 ObjectStateManager
        db.UserInfo.Remove(user);//将对象包装类状态标识为删除
    
        //删除单个实体
        //先加载整个实体 再删除 执行了2次sql 效率略低 
        user = (from v in db.UserInfo
                    where v.UserID == 14
                    select v).Single();
        db.UserInfo.Remove(user);
        db.SaveChanges();
    
        //修改
        user = new UserInfo()
        {
            UserID = 12,
            UserName = "zhangsan",
            UserPass = "987654"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Modified;
                    
        //修改单个属性
        db.UserInfo.Attach(user);
        db.Entry<UserInfo>(user).Property<string>(v => v.UserName).IsModified = true;
    
        //修改单个实体
        user = (from v in db.UserInfo
                    where v.UserName == "zhangsan"
                    select v).Single();
        user.UserPass = "abcd";
        db.SaveChanges();
    
        //查询遍历
        var users = db.UserInfo;
        foreach (var v in users)
        {
            ObjectDumper.Write(v);
        }
    
        //查询单个实体
        user = db.UserInfo.Find(12);
        ObjectDumper.Write(user);
    
        //保存更新到数据库
        db.SaveChanges();
    }
  • 相关阅读:
    python-模块-tkinter
    Linux-命令-基本-反引号``或$()
    Linux-命令-基本-time,ctime,atime
    Linux-命令-基本-find-exec
    Linux-命令-cp,mkdir
    Linux-命令-setup,ifup,ls,cd,touch重定向
    Linux-Buffer和Cache
    给Access数据库文件减肥
    GPT转MBR怎么转?
    Windows XP解决显示桌面图标消失的问题
  • 原文地址:https://www.cnblogs.com/gosky/p/5751815.html
Copyright © 2020-2023  润新知