创建上下文对象:

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. R语言从小木虫网页批量提取考研调剂信息

    一.从URL读取并返回html树     1.1 Rcurl包         使用Rcurl包可以方便的向服务器发出请求,捕获URI,get 和 post 表单.比R socktet连接要提供更高水 ...

  2. devexpress设置系统全局字体(含工具栏字体)

    1.许多时候,都需要设置系统的字体.devexpress设置字体效果图比较如下: 上图比较可以看出,字体应用到了所有控件. 2.数据绑定代码: DataTable dt = new DataTable ...

  3. Animate自定义动画

    在jQuery中出了基本的动画之外,还有用户 可以自定义的函数,Animate() 用于创建自定义动画的函数. apI上指出: 这个函数的关键在于指定动画形式及结果样式属性对象.这个对象中每个属性都表 ...

  4. MySQL备份说明

    第一次发布博客,发现目录居然不会生成,后续慢慢熟悉博客园的设置.回正文--- 1 使用规范 1.1 实例级备份恢复 使用innobackupex,在业务空闲期执行,考虑到IO影响及 FLUSH TAB ...

  5. iOS 图片裁剪方法

    iOS 图片裁剪方法 通过 CGImage 或 CIImage 裁剪 UIImage有cgImage和ciImage属性,分别可以获得CGImage和CIImage对象.CGImage和CIImage ...

  6. 一个简单的php站点配置

    一个简单的php站点配置   现在我们来看在一个典型的,简单的PHP站点中,nginx怎样为一个请求选择location来处理:   server {     listen      80;     ...

  7. 微信公众平台开发-OAuth2.0网页授权(含源码)

    微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...

  8. Python字典详解

    转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...

  9. 一篇文章为你深度解析HTTPS 协议

    一.前言 微信小程序如期发布,开发者在接入微信小程序过程中,会遇到以下问题: 小程序要求必须通过 HTTPS 完成与服务端通信,若开发者选择自行搭建 HTTPS 服务,那需要自行 SSL 证书申请.部 ...

  10. 深入源码剖析String,StringBuilder,StringBuffer

    [String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...