• 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();
    }
  • 相关阅读:
    学习:ASP.NET中App_Code,App_Data等文件夹的作用(转)
    总结:CLR Via C#(第九章):属性与索引器
    总结:CLR Via C#(第八章):其他(方法传递、out、ref)
    Init Version
    Code 128 Barcode Font Advantage Package 的常见问题
    Skelta Workflow.NET 2004 R2
    GTP.NET 甘特图项目管理控件
    Code 128 Barcode Font Advantage Package 中如何手动加入起始符,结束符,校验符
    VectorDraw Professional v5.1.1.1043
    开篇
  • 原文地址:https://www.cnblogs.com/wfy680/p/11969376.html
Copyright © 2020-2023  润新知