方式一,使用Attach,并更新某个属性的值(注意,不是所有的属性都作修改)

using (var context = new EFContext())
{
//方式一
var entity = context.Citys.Find(4);
context.Citys.Attach(entity);
entity.Name = "肇庆";
context.SaveChanges();
}

将一个entity标记为System.Data.Entity.EntityState.Modified更新时会更新所有的列(而不仅是修改了列),实际该使用哪种方式视场合而定。model对象可以不是从数据库获取的

using (var context = new EFContext())
{//方式二var model = context.Citys.Find(5);model.Name = "潮州";context.Entry(model).State = System.Data.Entity.EntityState.Modified;context.SaveChanges();
}

普通方式,全字段更新

 using (var db = new DBModel()){var student = db.students.FirstOrDefault(s => s.name == "萝莉");student.age = 13;   //将萝莉的年龄改为13岁
            db.SaveChanges();}

普通方式删除

 using (var db = new DBModel()){var student = db.students.FirstOrDefault(s => s.name == "萝莉");    //查找萝莉db.students.Remove(student);    //删除萝莉
            db.SaveChanges();}

在ef中使用sql语句

using (var db = new DBModel())  //创建数据库上下文
{//同步的方式执行SQL,并返回受影响的行数int result = db.Database.ExecuteSqlCommand(@"CREATE TABLE `test`.`test` (`id` INT NOT NULL,PRIMARY KEY(`id`)); ");//使用SqlParameter传值可以避免SQL注入var p_name = new SqlParameter("@name", "萝莉");var p_age = new SqlParameter("@age", 13);//如果使用的是MySql数据库 需要SqlParameter把替换为MySqlParameter//var p_name = new MySqlParameter("@name", "萝莉");//var p_age = new MySqlParameter("@age", 13);//更改学生年龄result = db.Database.ExecuteSqlCommand(@"UPDATE `test`.`student`SET `age` = @ageWHERE `name` = @name;", p_age, p_name);//异步的方式执行SQL,并返回受影响的行数Task<int> result2 = db.Database.ExecuteSqlCommandAsync("DROP TABLE `test`.`test`;");
}

using (var db = new DBModel())  //创建数据库上下文
{//查询叫萝莉的学生信息,并修改她的年龄student result1 = db.students.SqlQuery("SELECT  * FROM test.student WHERE name = '萝莉'").FirstOrDefault();result1.age = 13;   //通过实体集合下.SqlQuery查询到的数据,修改之后是可以保存到数据库的student result2 = db.Database.SqlQuery<student>("SELECT  * FROM test.student WHERE name = '旺财'").FirstOrDefault();result2.age = 21;   //因为使用的是.Database.SqlQuery查询到的,所以这里的修改不会保存到数据库//如果希望.Database.SqlQuery下查出的数据在修改后也能保存到数据库student result3 = db.Database.SqlQuery<student>("SELECT  * FROM test.student WHERE name = '小明'").FirstOrDefault();result3.age = 36;db.Entry<student>(result3).State = System.Data.Entity.EntityState.Modified; //通知数据上下文,这条记录也被修改了
    db.SaveChanges();
}

转载于:https://www.cnblogs.com/KQNLL/p/9420904.html

Entity Framework 普通操作(复习用)——感觉有点不对,需要撸代码验证相关推荐

  1. Entity Framework底层操作封装V2版本号(2)

    这个类是真正的数据库操作类.上面的那个类仅仅是调用了这个封装类的方法进行的操作 using System; using System.Collections.Generic; using System ...

  2. Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能

    Microsoft宣布Entity Framework 6 Alpha 3已 经可以下载了,它现在支持通过Fluent API将Code First映射到对应的新增.修改和删除功能的存储过程:添加了连 ...

  3. .NET Entity Framework入门简介及简单操作

    Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...

  4. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...

  5. Entity Framework 简单增删改操作

    前言 在 Entity Framework 简单查询操作 中主要是学习了在Entity Framework中的几种不同模式的查询操作,现在主要来学习一下简单的增加.删除.修改操作. 增加 在EF中添加 ...

  6. Entity FrameWork 操作使用详情

    Entity FrameWork 是以ADO.net为基础发展的ORM解决方案. 一.安装Entity FrameWork框架 二.添加ADO.Net实体数据模型 三.EF插入数据 using Sys ...

  7. sql注入pythonpoco_.NET EF(Entity Framework)详解

    一丶Entity Framework (一)EF简介 (1)ORM:Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库. (2)插入数据库不再是执行Insert,而 ...

  8. Entity Framework

    最近接触到Asp.net MVC 3 ,很"傻瓜"式的开发方式,其实傻瓜只能形容自己,因为MVC 3已经封装得很智能了,把实体类写下去,EF,Entity Framework就可以 ...

  9. Entity Framework 代码模板

    各种使用方式 EntityClient+EntitySQL string city = "London"; using (EntityConnection cn = new Ent ...

最新文章

  1. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)
  2. 窗体的Alpha通道透明色支持
  3. Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和
  4. com+ system application 启动_dubbo启动引导过程(基于2.7.9)
  5. 亚太地区数学建模优秀论文_数学建模美赛强势来袭!
  6. leetcode题库1014-- 最佳观光组合
  7. 国内比较好的几大酷站收藏网分享
  8. php url路由入门实例,ThinkPHP URL 路由实例
  9. Zeppelie连接jdbc的使用
  10. Atitit 提升开发效率使用内嵌Tomcat 内嵌webserver 于单元测试
  11. 织梦网站建设广告网络公司网站模板 电脑+手机 整站源码
  12. 计算机教室管理员应知应会,教室管理
  13. ipad服务器响应超时,iPad Air连接iTunes设备超时
  14. 苏州外包php,【苏州IT外包经验】Ubuntu 17.10系统下配置PHP+Apache+Mysql
  15. 如何用TortoiseSVN将项目代码提交到SVN
  16. [Python爬虫] 简单网络爬虫抓取博客文章及思想介绍
  17. 使用sqlcipher打开加密的sqlite方法
  18. 【CTA】CTA认证要求打开日历时提示联系人权限确认
  19. linux下kegg注释软件,科学网—生物信息——kegg分析的kobas软件的安装与使用 - 孙朋川的博文...
  20. ARCGIS中如何把线图层和面图层叠加呢?

热门文章

  1. js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器
  2. javascript基础学习一
  3. Linux下备份cisco路由配置
  4. org.apache.hadoop.hive.metastore.api.MetaException: Get request failed :xxxx
  5. case class到底啥用
  6. spring boot的hello world小实验
  7. Unknown/unsupported param List(--dist-cache-conf
  8. 对mask进行rle编码然后进行解码-详细注释
  9. pyspark读写SequenceFile
  10. 5-3 神经网络算法预测销量高低(改进版,消除了一些warning)