.Net EF框架的增删改查
创建上下文对象:
WordBoradEntities db = new WordBoradEntities();
添加:
//1.1创建实体对象
User uObj = new User()
{
uName = "刘德华",aa
uLoginName = "aaa",
uPwd = "asdfasdfasdfsadf",
uIsDel = false,
uAddtime = DateTime.Now
};
//1.2通过EF新增到数据库
//1.2.1将对象加入到数据上下文的 User集合中
db.Users.Add(uObj);
//1.2.2调用数据上下文的保存方法,将对象存数数据库
db.SaveChanges();
查询:
List<User> list = db.Users.Where(u => u.uName == "刘德华").ToList();
连接查询:linq连接查询:
from a in db.User join b in db. UsersAddresses on a.Id equals b.udid
EF连接查询:
IQueryable<UsersAddress> addrs = db.User.Include("UsersAddresses").Where(a => a.Id == );
另一种连接查询:
var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});
删除:EF中实现删除有三种方式
注:版本一、二都是根据主键删除,版本三是根据任意条件到数据库查询然后再根据查询的结果进行删除,实际上版本三也是根据查询出来的结果中的主键进行删除。
版本一:根据主键删除
//实例化一个Users对象,并指定Id的值
Users user = new Users() { Id = };
//将user附加到上下文对象中,并获得EF容器的管理对象
var entry = db.Entry<User>(user);或者 var entry=db.Entry(user);
//设置该对象的状态为删除
entry.State = EntityState.Deleted;
//保存修改
db.SaveChanges();
Console.WriteLine("删除成功!");
版本二:根据主键删除
//实例化一个Users对象,并指定Id的值
Users user = new Users() { Id = };
//将user附加到上下文对象中
db.Users.Attach(user);
//删除user对象
Db.Users.Remove(user);
//保存修改
db.SaveChanges();
Console.WriteLine("删除成功!");
版本三:根据条件先查询出来然后再删除
var list= db.Users.Where(u => u.Name ==”张三”);
if(list!=null&&list.Any())
{
Foreach(User item in list)
{
db.User.Remove(item);
}
}
db.SaveChanges();
修改:
.官方推荐的修改方式(先查询,再修改)
//将Id为2的Users数据取出
var user = db.Users.Where(u => u.Id == ).FirstOrDefault();
Console.WriteLine("修改之前:" + user.UserName);
//修改UserName属性
user.UserName = "";
//保存修改
db.SaveChanges();
Console.WriteLine("修改之后:" + user.UserName);
.自己优化的修改方式
//1.创建出一个要修改的对象
User use = new User() { uId = ,uName="小白~~~"};
//2.将对象加入 EF容器,并获取当前实体对象的状态管理对象
DbEntityEntry<User> entry = db.Entry<User>(user);
//3.设置该对象为被修改过
entry.State = System.Data.EntityState.Unchanged;
//4.设置该对象的 uName属性为修改状态,同时 entry.State 被修改为 Modified 状态
entry.Property("uName").IsModified = true;
//5.关闭EF实体合法性检查(如果创建出来的要修改的数据有的字段没有赋值则关闭实体合法性检查,如果所有字段都赋值了则不用关闭EF实体合法性检查)
db.Configuration.ValidateOnSaveEnabled = false;
//6.重新保存到数据库 -- ef 上下文会根据实体对象的状态,根据 entry.State =Modified 的值生成对应的 update sql 语句.
db.SaveChanges();
Console.WriteLine("修改成功:");
.Net EF框架的增删改查的更多相关文章
- Entity - 使用EF框架进行增删改查 - 模型先行
模型先行:先创建数据库实体模型,然后再进行数据库的增删改查. 基本步骤是不变的,可参照 <Entity - 使用EF框架进行增删改查 - 数据库先行> 其中的不同是,在创建数据库实体模型的 ...
- VS2012里面使用EF框架的增删改查和分页的方法
public class BaseRepository<T> where T : class { //实例化EF框架 DataModelContainer ...
- Entity - 使用EF框架进行增删改查 - 数据库先行
数据库先行:先创建数据库,然后进行增删查该操作. 要操作的表结构(表名:Tb_Category): 创建一个控制台程序: 添加一个ADO.NET实体数据模型: 1.对控制台程序右键 2.选择ADO.N ...
- EF框架实增删改查
数据库链接配置: <connectionStrings> <add name="XxzxWorkEntities" connectionString=" ...
- .net EF框架-实现增删改查
声明一个EF上下文对象 Model dbContext = new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact = new Contact( ...
- .NET EF 框架-实现增删改查
声明一个EF上下文对象 Model dbContext=new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact =new Contact(); ...
- tp框架的增删改查
首先,我们来看一下tp框架里面的查询方法: 查询有很多种,代码如下: <?php namespace Admin\Controller; use Think\Controller; class ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- Yii2.0高级框架数据库增删改查的一些操作
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
随机推荐
- MySQL主从复制的原理和实践操作
MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份.高可用HA.读写分离.在配置主从复制之前需要先准备 2 台 MySQL 服务器. 一.MySQL主从原理 1. ...
- UML类图中的关系和表示方法
类图是用来描述程序中的类以及它们之间的关系的,使用类图可以帮助我们简化对系统的理解.在UML类图中比较常见的关系有六种,它们分别是:依赖.关联.聚合.组合.泛化.实现,这六种关系中类之间的紧密程度是依 ...
- centos 安装gcc->联网 问题解决
本篇部分摘抄至TD_时缔 VMware虚拟机下安装centosmini版本,安装后第一件事就是yum update 但是有错:cannot find a valid baseurl for repo ...
- c++类的构造函数详解
c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类 ...
- Python2.7学习笔记-定义函数、filter/map/reduce/lambda
我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: ...
- 【转】svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了. 错误如下 解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db ...
- Sublime Text 3 (Build 3126) 最新注册码
Sublime Text 作为程序员开发神器,听说最新版更新了 并且增加了不少新特性.马上到官网下载了最新版 Sublime Text 3 3126 使用了下,反应速度比以前的确更快了.随手找了几个S ...
- js 封装原生ajax
jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿.这时我们就 ...
- Java面试07|Redis数据库
1.Redis持久化的几种方式 (1)RDB(Redis DataBase)持久化 (2)AOF(Append Only File)持久化 2.Redis的缓存失效策略 主要涉及到expire对主键过 ...
- android studio 中的 gradle version
刚开始接触AS,从geithub上download了好多项目,每一个都需要改动,对我这种新手来说,慢慢琢磨吧 问题一: 解决办法: 在build.gradle中,将gradle的版本改正如上图所示即可 ...