首页 > 其他 > 详细

EF简单增删改查

时间:2019-12-02 11:27:19      阅读:72      评论:0      收藏:0      [点我收藏+]

 

第一步:创建上下文对象

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();
}

EF简单增删改查

原文:https://www.cnblogs.com/wfy680/p/11969376.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!