【EF学习笔记04】----------EF简单增删改查
第一步:创建上下文对象
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简单增删改查的更多相关文章
- Mysql学习笔记(六)增删改查
PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...
- mongodb数据库学习【安装及简单增删改查】
//@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源 <turing_zhy@163.com> //@date:2018/08/ ...
- mysql学习笔记一 —— 数据的增删改查
1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...
- Mybatis学习笔记之---CRUD(增删改查)
Mybatis的CRUD(增删改查) 1.pom.xml <dependencies> <dependency> <groupId>junit</groupI ...
- hibernate学习笔记之四 Hibernate的增删改查
采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- EF学习笔记-2 EF之支持复杂类型的实现
使用过.NET的小伙伴们知道,在我们的实体模型中,除了一些简单模型外,还有一些复杂类型,如几个简单的类型组合而成的类型:而EF除了在实现基本的增删改查之外,也支持复杂类型的实现. 那么如何手动构造复杂 ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
随机推荐
- ArrayList,Vector线程安全性测试
import java.util.ArrayList; import java.util.List; //实现Runnable接口的线程 public class HelloThread implem ...
- linux内核hash list
源码: #ifndef _LINUX_HLIST_H #define _LINUX_HLIST_H /* * Double linked lists with a single pointer lis ...
- [ActionScript 3.0] AS3 GUID(全局唯一标识符)
package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...
- java中的final总结
Java关键字final有最终的,不可改变的含义,它可以修饰非抽象类.非抽象类成员方法和变量. 报错:类"TestFinal"要么是abstract,要么是final的,不能两个都 ...
- 在Eclipse ee中成功使用jQuery UI插件
关键代码截图如下:
- java中的static变量
java中的static变量 例如 public static int num=0: num+=1;放在函数里面 调用一次变动一次.
- Regional Changchun Online--Ponds
网址:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others) Me ...
- (转)Struts2返回JSON对象的方法总结
转自:http://kingxss.iteye.com/blog/1622455 如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选 ...
- testng参数化方法:Parameters和DataProvider
Parameters注解在测试方法上指定参数列表,然后在测试方法中声明对应的形参,形参与参数列表一一对应,但名字可以不同,如下所示: public class Test1 { @Parameters( ...
- 求编译器中数的最值(c++)
#include <limits> //头文件 #include <iostream> using namespace std; int main() { cout <& ...