创建上下文对象:

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框架的增删改查的更多相关文章

  1. Entity - 使用EF框架进行增删改查 - 模型先行

    模型先行:先创建数据库实体模型,然后再进行数据库的增删改查. 基本步骤是不变的,可参照 <Entity - 使用EF框架进行增删改查 - 数据库先行> 其中的不同是,在创建数据库实体模型的 ...

  2. VS2012里面使用EF框架的增删改查和分页的方法

    public class BaseRepository<T> where T : class    {        //实例化EF框架        DataModelContainer ...

  3. Entity - 使用EF框架进行增删改查 - 数据库先行

    数据库先行:先创建数据库,然后进行增删查该操作. 要操作的表结构(表名:Tb_Category): 创建一个控制台程序: 添加一个ADO.NET实体数据模型: 1.对控制台程序右键 2.选择ADO.N ...

  4. EF框架实增删改查

    数据库链接配置: <connectionStrings> <add name="XxzxWorkEntities" connectionString=" ...

  5. .net EF框架-实现增删改查

    声明一个EF上下文对象 Model dbContext = new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact = new Contact( ...

  6. .NET EF 框架-实现增删改查

    声明一个EF上下文对象 Model dbContext=new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact =new Contact(); ...

  7. tp框架的增删改查

    首先,我们来看一下tp框架里面的查询方法: 查询有很多种,代码如下: <?php namespace Admin\Controller; use Think\Controller; class ...

  8. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  9. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

随机推荐

  1. java学习笔记——IO流部分

    IO流常用的有:字符流.字节流.缓冲流.序列化.RandomAccessFile类等,以上列出的都是开发中比较常用的. 1.字节流: 字节流包含:FileInputStream/FileOutputS ...

  2. windows管道

    匿名管道的使用 匿名管道主要用于本地父进程和子进程之间的通信, 在父进程中的话,首先是要创建一个匿名管道, 在创建匿名管道成功后,可以获取到对这个匿名管道的读写句柄, 然后父进程就可以向这个匿名管道中 ...

  3. vue1升级到vue2的问题

    router 不能用map方法了,需要改router的结构改为 routers= [ { // 当没有匹配路由时默认返回的首页        path:'/index',        compone ...

  4. 3月题外:关于JS实现图片缩略图效果的一些小问题

    由于3月可能要结束实习,所以应该不会有特别固定的主题,另外我会在月初陆续补上上个月的番外篇Projection和TMS,作为介绍性的内容对矢量切片部分进行补充,剩下时间不定期写一些杂烩. 最近两天在做 ...

  5. Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势

    原创文章,同步首发自作者个人博客转载请务必在文章开头处注明出处. 摘要 本文结合实例详细阐明了Spark数据倾斜的几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自定义Partitio ...

  6. SVN 中trunk、branches、tags的详解

    1.trunk是主分支,是日常开发进行的地方.2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本 ...

  7. Struts2学习笔记④

    刚才看书发现了一个问题,就是ActionSupport和Action接口的区别没搞清楚,弄得我以为我之前的代码写错了.其实ActionSupport已经实现了Action接口了,实际开发中也很少使用A ...

  8. 微信开源PHP商城系统一处blind xxe(无需登录,附POC)

    测试版本wemall 3.3 下载地址 http://git.oschina.net/einsqing/wemall/repository/archive?ref=master 需要开源中国的账号 c ...

  9. 3856: Monster

    3856: Monster Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 351  Solved: 161[Submit][Status][Discuss ...

  10. 1191: [HNOI2006]超级英雄Hero

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1996  Solved: 946[Submit][S ...