EF的增删改查

  创建上下文对象:WordBoradEntities db = new WordBoradEntities();

  一、添加:

  //1.1创建实体对象

  User uObj = new User()

  {

  uName = "刘德华",

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

  二、查询:

  1、单行 var userLogin = db.T_UserLogin.Where(d => d.LoginID == loginID).FirstOrDefault();

  2、多行

  1)var list = db.Users.Where(u => u.uName == "刘德华").ToList();

  2)List list = db.Users.Where(u => u.uName == "刘德华").ToList();

  3、连接查询:

  1)linq连接查询: from a in db.User join b in db. UsersAddresses on a.Id equals b.udid

  2)EF连接查询:IQueryable addrs = db.User.Include("UsersAddresses").Where(a => a.Id == 1);

  3)另一种连接查询:var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});

  三、删除:

  EF中实现删除有三种方式,版本一、二都是根据主键删除,版本三是根据任意条件到数据库查询然后再根据查询的结果进行删除,实际上版本三也是根据查询出来的结果中的主键进行删除。

  1 :根据主键删除

  //实例化一个Users对象,并指定Id的值

  Users user = new Users() { Id = 1 };

  //将user附加到上下文对象中,并获得EF容器的管理对象

  var entry = db.Entry(user);或者 var entry=db.Entry(user);

  //设置该对象的状态为删除

  entry.State = EntityState.Deleted;

  //保存修改

  db.SaveChanges();

  Console.WriteLine("删除成功!");

  2:根据主键删除

  //实例化一个Users对象,并指定Id的值

  Users user = new Users() { Id = 1 };

  //将user附加到上下文对象中

  db.Users.Attach(user);

  //删除user对象

  Db.Users.Remove(user);

  //保存修改

  db.SaveChanges();

  Console.WriteLine("删除成功!");

  3:根据条件先查询出来然后再删除

  var list= db.Users.Where(u => u.Name ==”张三”);

  if(list!=null&&list.Any())

  {

  Foreach(User item in list)

  {

  db.User.Remove(item);

  }

  }

  db.SaveChanges();

  四、修改:

  1.官方推荐的修改方式(先查询,再修改)

  //将Id为2的Users数据取出

  var user = db.Users.Where(u => u.Id == 2).FirstOrDefault();

  Console.WriteLine("修改之前:" + user.UserName);

  //修改UserName属性

  user.UserName = "222222222222222";

  //保存修改

  db.SaveChanges();

  Console.WriteLine("修改之后:" + user.UserName);

  2.自己优化的修改方式

  //1)创建出一个要修改的对象

  User use = new User() { uId = 8,uName="小白~~~"};

  //2)将对象加入 EF容器,并获取当前实体对象的状态管理对象

  DbEntityEntry entry = db.Entry(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("修改成功:");

  五、增删改查的另一种方式,纯sql。

  当遇到复杂的需求,需要书写复杂语句,但有不特别熟悉EF语法时有两种方案:

  1.数据库中创建视图;

  2纯sql方式;

  //1)查询SqlQuery

  result.slList = db.Database.SqlQuery("select Precision,Year,LandCover, sum(Area) as Area from [EcoTypes] where LandCover=@type group by Precision, Year, LandCover", new SqlParameter("@type", "森林")).Select(d=> d.Area).ToList();

  //2)增删改:ExecuteSqlCommand

  db.Database.ExecuteSqlCommand("").ToString();

  详情请db.Database. 此时会出现所有方式和相应的说明文字。

  注释: db是视图对象模型。

  EcologyEntities db = new EcologyEntities();

  六、当以上方法都不能满足是,大不了写点原生ADO代码,一个项目两种ORM也是可以的,只要能解决复杂问题。

  (编辑:雷林鹏 来源:网络)

[.NET源码] EF的增删改查的更多相关文章

  1. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  2. EF实现增删改查

    从来没想到过能在这个上面翻车,感慨自学没有培训来得系统啊,废话不多说 ORM:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一 ...

  3. http://www.cnblogs.com/nangong/p/db29669e2c6d72fb3d0da947280aa1ce.htm ASP.NET从零开始学习EF的增删改查

    http://www.cnblogs.com/nangong/p/db29669e2c6d72fb3d0da947280aa1ce.htmlASP.NET从零开始学习EF的增删改查

  4. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  5. EF CodeFirst增删改查之‘CRUD’

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇旨在学习EF增删改查四大操作 上一节讲述了EF ...

  6. EasyUI +MVC +EF实现增删改查

    OA项目的框架已经搭建好了,接下来就是在这个框架下完成相应的业务的编码,接下来实现UserInfo页面的增删改查. 1.首先先谈一下遇到的一个框架上的问题:提示EF版本不一致之类的问题,主要是解决方案 ...

  7. [EF]使用EF简单增删改查

    目录 认识EF 添加数据 删除数据 修改数据 查询数据 总结 认识EF ADO.NET Entity Framework 是微软以ADO.NET为基础所发展出来的对象关系对伊(O/R Mapping) ...

  8. ASP.NET MVC学习---(三)EF简单增删改查

    那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...

  9. MVC学习-用EF做增删改查

    在做增删改查先,先介绍几个知识点: 1.代理类 在将对象方法EF数据上下文时,EF会为该对象封装 一个代理类对象, 同时为该对象的每一个属性添加一个标志:unchanged, 当对该对象某个属性进行操 ...

随机推荐

  1. 20154312 曾林 Exp3 免杀原理与实践

    20154312 曾林 0.写在前面 AV厂商检测恶意软件的方式主流的就三种: 基于特征码的检测 启发式恶意软件检测 基于行为的恶意软件检测 我们要做的就是让我们的恶意软件没法被这三种方式找到,也就是 ...

  2. MyBatis学习笔记(三)——优化MyBatis配置文件中的配置

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264301.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的 ...

  3. python-正则表达式练习题

    1.匹配一行文字中的所有开头的字母内容 #coding=utf-8 import re s="i love you not because of who you are, but becau ...

  4. 一起学koa

    gitbook地址 http://17koa.com/koa-generator-examples/

  5. Linux服务器配置---安装vsftpd

    安装vsftpd 大多数Linux系统都使用vsftpd,因此这里我们也安装vsftpd 1.安装vsftpd [root@localhost phpMyAdmin]# yum install -y ...

  6. 解决secureCRT 数据库里没有找到防火墙 '无' 此会话降尝试不通过防火墙进行连接。

    解决secureCRT 数据库里没有找到防火墙 '无' 此会话降尝试不通过防火墙进行连接.的方法 中文版的CRT由于汉化的问题(把null翻译成无了),导致每次打开都会有个防火墙的错误提示:数据库里没 ...

  7. 2016NOI冬令营day5

    考试 坑坑坑 无法调试 两个小时写的第一题爆零了 O(n)(n<=200)都能被卡T???数据乱搞吧WOC 10分胸牌滚粗

  8. iOS之第三方库以及XCode插件介绍

    前言 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 ...

  9. Bootstrap+AngularJS对话框实例

    <script type="text/javascript" src="/assets/JS/plugins/jquery.min.js">< ...

  10. 怎么归档老日志的shell脚本

    本脚本来自有学习阿铭的博文学习:工作中,需要用到日志切割logrotate,按照各自的需要切割.定义保留日志.提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样. #用途:日志切割归档.按 ...