第一步:创建上下文对象

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

新增

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

删除

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

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

删除 方法2

    user = new UserInfo()
{
UserID = //根据主键删除
};
//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 ==
select v).Single();
db.UserInfo.Remove(user);
db.SaveChanges();
}

修改

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

修改单个属性

    user = new UserInfo()
{
UserID = ,
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();
ObjectDumper.Write(user);
}

说明:查询UserID=12的用户

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

完整案例:

using(var db = new Entities())
{
//新增
UserInfo user = new UserInfo()
{
UserName = "zhangsan1",
UserPass = ""
};
db.UserInfo.Add(user); //删除
user = new UserInfo()
{
UserID = , //根据主键删除
UserName = "zhangsan",
UserPass = ""
};
db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Deleted; //删除 方法2
user = new UserInfo()
{
UserID = //根据主键删除
};
//Attach的实体事先不能已经在内存中,否则上下文会追踪到两个相同键名的实体
db.UserInfo.Attach(user);//将对象添加到EF管理容器中 ObjectStateManager
db.UserInfo.Remove(user);//将对象包装类状态标识为删除 //删除单个实体
//先加载整个实体 再删除 执行了2次sql 效率略低
user = (from v in db.UserInfo
where v.UserID ==
select v).Single();
db.UserInfo.Remove(user);
db.SaveChanges(); //修改
user = new UserInfo()
{
UserID = ,
UserName = "zhangsan",
UserPass = ""
};
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();
ObjectDumper.Write(user); //保存更新到数据库
db.SaveChanges();
}

【EF学习笔记04】----------EF简单增删改查的更多相关文章

  1. Mysql学习笔记(六)增删改查

    PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...

  2. mongodb数据库学习【安装及简单增删改查】

    //@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2018/08/ ...

  3. mysql学习笔记一 —— 数据的增删改查

    1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...

  4. Mybatis学习笔记之---CRUD(增删改查)

    Mybatis的CRUD(增删改查) 1.pom.xml <dependencies> <dependency> <groupId>junit</groupI ...

  5. hibernate学习笔记之四 Hibernate的增删改查

    采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...

  6. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  7. EF学习笔记-2 EF之支持复杂类型的实现

    使用过.NET的小伙伴们知道,在我们的实体模型中,除了一些简单模型外,还有一些复杂类型,如几个简单的类型组合而成的类型:而EF除了在实现基本的增删改查之外,也支持复杂类型的实现. 那么如何手动构造复杂 ...

  8. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  9. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  10. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

随机推荐

  1. 区分listview的item和Button的点击事件

    这两天修改领导通的ListView widget,在ListView中加入Button这类的有 “点击” 事件的widget,发现原来listview的itemclick居然失效了, 后来在网上查资料 ...

  2. JAVA 主函数(主方法)

    主函数(主方法) 1.public     (访问修饰符,公共的)代表该类或者该方法访问权限是最大的 2.static    代表主函数随着类的加载而加载 3.void    代表主函数没有具体的返回 ...

  3. map遍历测试结果

    结论:一般情况下推荐使用enterSet的for循环(即以下的方法2),如果只是取key值可以使用keySet性能会更好. 因为keySet只取key,enterSet即取了key又取了value. ...

  4. ubuntu 修该rm命令使删除文件到回收站

    ubuntu下删除文件到回收站 相信有不少同学和我一样,有因习惯了rm命令,好几次一不小心冲动就删除重要文件的惨痛经历! 目标:将删除成功的文件会放入系统回收站中,位置:~/.local/share/ ...

  5. windows service的继承类ServiceBase

    https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicebase.exitcode(v=vs.80).aspx 在停 ...

  6. 解决xcode打开时loading假死的问题

    症状如下: 点击打开xcode后,就一直会看到loading,但是CPU消耗很高,基本上就是死了(动弹不得),通过活动监测器看到xcode显示为“未响应” 以为是安装程序的问题,结果选中xcode拉到 ...

  7. 第3章 System V IPC

    3.1 概述 System V IPC 包含:System V消息队列.System V信号量.System V共享内存. 3.2 key_t 键和 ftok函数 这三种类型的System V IPC ...

  8. SQL查询数据库是否存在

    在实际工作中会遇到通过SQL查询数据库是否存在的情况,下面一些语句可以提供一些帮助,本文的语句是在SQL08R2中测试的 1,查询当前数据库服务器所有数据库 select *  From master ...

  9. FastDFS的安装配置

    一:实验描述: fastdfs 介绍 FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别 ...

  10. python基础set

    1.set set是一个无序的不重复的集合 li=[11,22,33,11] s=set(li) print(s) {11,22,33}  set提供的方法 1.add(self, *args, ** ...