.Net EF框架的增删改查

时间:2022-09-18 20:56:51

创建上下文对象:

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. &period;net EF框架-实现增删改查

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

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

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

  7. tp框架的增删改查

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

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

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

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

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

随机推荐

  1. VC&plus;&plus; Debugger Tips&lbrack;转&rsqb;

    本文摘自:http://blogs.msdn.com/b/vcblog/archive/2006/08/04/689026.aspx Hi, my name is Sergey Grankin and ...

  2. Entity Framework 程序设计入门二 对数据进行CRUD操作和查询

    前一篇文章介绍了应用LLBL Gen生成Entity Framework所需要的类型定义,用一行代码完成数据资料的读取, <LLBL Gen + Entity Framework 程序设计入门& ...

  3. git add

    一.前言git add命令主要用于把我们要提交的文件的信息添加到索引库中.当我们使用git commit时,git将依据索引库中的内容来进行文件的提交. 二.基本git add <path&gt ...

  4. 大数据hadoop入门学习之集群环境搭建集合

    目录: 1.基本工作准备 1.虚拟机准备 2.java 虚拟机-jdk环境配置 3.ssh无密码登录 2.hadoop的安装与配置 3.hbase安装与配置(集成安装zookeeper) 4.zook ...

  5. Android 项目建立步骤

    使用eclipse,进行安卓开发,在建立项目的时候,有些步骤必须注意的, 本文就是对使用eclipse进行android开发的简单说明: 一.模拟器配置设定 使用eclipse开发安卓,需要用到and ...

  6. VS2013编译libcurl

    首先从这里下载libcurl的package: http://curl.haxx.se/libcurl/ 然后解压,里面有个winbuild文件夹,这里是为windows构建工程的文件夹.里面有nma ...

  7. Red Hat Enterprise Linux 7的新功能

     简介红帽最新版本的旗舰平台交付显著增强的可用性. 性能和可靠性. 丰富的新功能为架构. 系统管理员和开发人员提供所需的资源以更高效地进行创新和管理.架构师: 红帽® 企业 Linux® 7 适合 ...

  8. 数据结构——表&lpar;list&rpar;

    #include <iostream> #include <list> using namespace std; 标准类的存储方式为双向循环链表 list类 class lis ...

  9. Highcharts中文教程

    http://www.hcharts.cn/docs/index.php?doc=start

  10. Asp&period;net缓存技术(HttpRuntime&period;Cache)

    一.缓存: 5个等级的缓存 1级是网络级缓存,缓存在浏览器,CDN以及代理服务器中   (举个例子:每个帮助页面都进行了缓存,访问一个页面的代码非常简单) 2级是由.net框架 HttpRuntime ...