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

1>. 创建一个控制台程序
2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(StudentModel.edmx)
3>. 控件台代码

        static void Main(string[] args){// 创建一个网关接口,TestData是数据库名TestDataEntities td = new TestDataEntities();// 创建一个实体对象,Student是表映射过来的对象,将其赋值Student st1 = new Student();st1.StudentID = "s4";st1.StudentName = "test1";st1.Age = 20;// 将实体对象添加到网关接口,插入操作td.Student.AddObject(st1);// 网关保存并改变td.SaveChanges();Console.WriteLine("添加成功!");}

如上 StudentModel.edmx 是生成的实体模型就是 映射表,里面包含对象于表的定义

Entity Framework 增删改查 操作

1>. 基本同上
2>. 控件台代码

    class Program{// 创建一个网关接口,TestData是数据库名,静态方法只能调用静态类static TestDataEntities stuEntities = new TestDataEntities();static void Main(string[] args){// 创建一个实体对象,Student是表映射过来的对象,将其赋值Student st1 = new Student();st1.StudentID = "s4";st1.StudentName = "小明";st1.Age = 20;//InsertStu(st1);//DeleteStu("s4");//Student stu2 = FindStudentByID("s4");//stu2.StudentName = "小明";//UpdateStu(stu2);//Console.WriteLine(stu2.StudentName);}// 添加操作public static void InsertStu(Student stu){// 将实体对象添加到网关接口,插入操作stuEntities.Student.AddObject(stu);// 网关保存并改变stuEntities.SaveChanges();Console.WriteLine("添加成功!ID:"+stu.StudentID);}// 删除操作public static void DeleteStu(string ID){Student stu = FindStudentByID(ID);stuEntities.Student.DeleteObject(stu);stuEntities.SaveChanges();Console.WriteLine("删除成功!ID:" + stu.StudentID);}// 更新操作public static void UpdateStu(Student stu){// 其中 var 为 IQueryable<Student>类型,继承IEnumerable<Student>// 继承IEnumerable的类都能实现 foreachvar student = from s in stuEntities.Studentwhere s.StudentID == stu.StudentIDselect s;// 得到student集合里面的单一实体var oldStu = student.SingleOrDefault();// 修改对应的属性值oldStu.StudentName = stu.StudentName;oldStu.Age = stu.Age;// 保存修改stuEntities.SaveChanges();Console.WriteLine("更新成功!ID:" + stu.StudentID);}// 更新数据 新方法public bool UpdateEntity(MvcHotel.Model.Customer entity){bool result = false;// 添加对象到上下文he.Attach(entity);// 改变新加入对象的状态,设置为 已修改he.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);if (he.SaveChanges() > 0){result = true;}return result;}// 查询操作public static Student FindStudentByID(string ID){// 方式1: Linq to EF// 根据ID查询Student,并得到集合中的单一实体var stu = (from s in stuEntities.Studentwhere s.StudentID == IDselect s).SingleOrDefault();// 方式2: Entity SQLstring sql = "select Value c from TestDataEntities.Student as c ";ObjectQuery<Student> query = stuEntities.CreateQuery<Student>(sql);ObjectResult<Student> results = query.Execute(MergeOption.NoTracking);//return stu;return query.SingleOrDefault();}}

EF中操作数据库的网关

ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关
ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互
ObjectContext 类的实例封装以下内容:
a> 到数据库的连接,以 EntityConnection 对象的形式封装。
b> 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装
c> 用于管理缓存中持久保存的对象的 ObjectStateManager 对象

posted on 2017-05-08 12:20 赵大海 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhaodahai/p/6824501.html

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

  1. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  2. 在ABP解决方案中添加一个Core层的项目

    1,在src目录下新建一个项目,类库,例如叫AbpDemo.Core.System, 然后修改项目属性,把命名空间修改回来为:AbpDemo 然后添加依赖,照着现有的领域层AbpDemo.Core添加 ...

  3. Abp Vnext应用程序项目中添加docker支持的小结

    文章目录 介绍 具体步骤 1.创建项目 2.添加docker支持 3.调整 4.运行实例 总结 介绍 abp vnext 里面的只有 module 项目里面是自动添加 docker 支持的,因为其是面 ...

  4. springboot项目中一个实体类引用其它实体类的字段并显示到页面上

    1.需要在该实体类中添加引用实体类的字段,并添加getter和setter方法,并添加@Transient注解,或者使用@TableField(exist = false)注解.如下图: 2.在map ...

  5. vue 怎么在字符串中指定位置插入字符_vue项目中在可编辑div光标位置插入内容的实现代码...

    vue项目中在可编辑div光标位置插入内容 html: @dragstart="dragStart($event, item.labelName)" draggable='true ...

  6. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  7. php怎么使用多个数据库,怎么在php项目中使用CI对多个数据库进行操作

    怎么在php项目中使用CI对多个数据库进行操作 发布时间:2020-12-19 16:57:21 来源:亿速云 阅读:87 作者:Leah 今天就跟大家聊聊有关怎么在php项目中使用CI对多个数据库进 ...

  8. php7开发的项目怎么样,如何在PHP7项目中搭建一个多线程

    如何在PHP7项目中搭建一个多线程 发布时间:2021-03-05 15:31:22 来源:亿速云 阅读:93 作者:Leah 这期内容当中小编将会给大家带来有关如何在PHP7项目中搭建一个多线程,文 ...

  9. vue光标插入内容_vue项目中在可编辑div光标位置插入内容的实现代码

    vue项目中在可编辑div光标位置插入内容 html: @dragstart="dragstart($event, item.labelname)" draggable='true ...

最新文章

  1. 红书《题目与解读》第一章 数学 题解《ACM国际大学生程序设计竞赛题目与解读》
  2. 《深入理解ES6》笔记——块级作用域绑定(1)
  3. RunLoop 浅析
  4. Python 中的闭包、匿名函数、decorator 装饰器与python的偏函数
  5. 前端学习(2860):简单秒杀系统学习之前端优化
  6. Dubbo与SpringCloud的架构与区别
  7. win7找回开机密码_电脑密码忘记了?教你四步轻松找回电脑开机密码
  8. wxAdditions使用小结
  9. python如何访问对象的属性_Python:从存储在字典中的对象访问对象属性
  10. 将android中如何调整Toast位置?
  11. 工厂方法(Factory Pattern)
  12. int和Integer有什么区别(转)
  13. 转帖:一份不错的游戏程序书单(比较全面,但都是英文的。。)
  14. C# 判断操作系统位数
  15. 当时光匆匆才知道梦想遥不可及
  16. 未能连接一个windows服务器,Win7出现未能连接一个Windows服务的解决办法
  17. 常用第三方SDK目录
  18. python re模块下载_python: re模块
  19. 数字藏品|NFT整个行业的调研报告 数字藏品有价值吗 数字藏品是什么 百度数字藏品
  20. 项目实训—场景划分(一)

热门文章

  1. 安天移动安全发布“大脏牛”漏洞分析报告(CVE-2017-1000405)
  2. Linux内核中无名管道pipe和有名管道fifo的分析
  3. 微信小程序怎么在wxml中插入多个图片_兰州小程序开发流程费用推荐品牌_便企网...
  4. 梅捷主板A780G+不支持前面板耳机输出?
  5. matlab优化工具箱
  6. 宇宙总统pascal程序
  7. crtsiii型无砟轨道板_为什么高铁轨道不像普快列车轨道那样铺碎石?
  8. python列表换行写入_如何使用Python3中的换行符将列表写入文件
  9. uitextfield 键盘类型_UITextField 键盘弹出问题
  10. Linux三大主流网站构建平台,Linux快速构建LAMP网站平台