第一步:创建上下文对象

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. NodeJS 学习资料

    1. npm 除Node本身提供的API外,现在有不少第三方模块可极大的提高开发效率,npm就是Node的软件包管理器,可以用它安装所需软件包并发布自己为nodejs写的软件包. npm安装node扩 ...

  2. Python基础08 面向对象的基本概念

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢逆水寒龙,topmad和Liqing纠错 Python使用类(class)和对 ...

  3. FBI传授9秘诀:如何看穿对方在撒谎 z

    第1招:不提及自身和姓名 美国赫特福德郡大学的心理学家韦斯曼说,〝人们在说谎时会本能地把自己从他们所说的谎言中剔除出去〞.所以如果你向某人提问时,他们总是反覆地省略〝我〞,他们就有被怀疑的理由了.反过 ...

  4. Good Sentences

    Wine in, truth out One is never too old to learn What is done can not be undone Time tries all thing ...

  5. 怎么查询局域网内全部电脑IP和mac地址等信息?

    在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...

  6. C++学习40 抛出自己的异常

    throw 是C++中的关键字,用来抛出异常.如果不使用 throw 关键字,try 就什么也捕获不到:上节提到的 at() 函数在内部也使用了 throw 关键字来抛出异常. throw 既可以用在 ...

  7. [Other] 自定义MIME类型支持FLV的相关设置

    刚测试知道为何服务器无法播放flv的原因,特此记录而已. 网络空间支持FLV的相关设置,就是自定义一个MIME类型,一般虚拟主机管理里面都有这个选项 自定义MIME类型 扩展名: .flv MIME类 ...

  8. [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态

    <?xml version="1.0" encoding="utf-8"?><!--控制弹出菜单的透明度.可用.可选择状态 PopUpButt ...

  9. [ActionScript 3.0] AS3 用于拖动对象时一次一页的缓动

    package com.fylibs.components.effects{ import com.tweener.transitions.Tweener; import flash.display. ...

  10. gomoblie flappy 源码分析:游戏逻辑

    本文主要讨论游戏规则逻辑,具体绘制技术请参看相关文章: gomoblie flappy 源码分析:图片素材和大小的处理 http://www.cnblogs.com/ghj1976/p/5222289 ...