本文主要的目的是

1. 说明Entity Framework Power Tools如何使用。

2. Entity Framework  快速门

实验环境:

OS: Windows Server 2012, Windows 7

DE: VS2013 + MVC 6.0+Entity Framework+ SQL Server 2012

准备工作

基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tools(一个Code First反向工程工具)。只要在Visual Studio扩展里面输入“Entity Framework Power”搜索即可找到最新的扩展

点击下载即可(如下图)。当然你也可以到这里Entity Framework Power Tools Beta 3下载安装包进行安装。

在这里我们这里新建“School”数据库,打开Microsoft SQL Server 2012的SQL Server Management Studio管理工具,新建”School”数据库。

执行创建表的脚本,脚本路径如下

http://msdn.microsoft.com/zh-cn/data/jj614587

然后我们创建一个控制台应用程序,项目名称为EFPowerToolsSample。

在使用EF power tool 之前,先安装EntityFramewok,否则会出现奇怪的问题。

在项目引用右键弹出菜单选择“管理NuGet程序包”

在弹出窗口键入Entity Framwork,并安装。

反向工程生成POCO代码

右键单击项目,然后选择“实体框架”–>“对 Code First 进行反向工程”。

输入要根据其对 Code First 进行反向工程的现有数据库的相关信息。

注意:这将对数据库中的所有表进行反向工程,因此如果不希望操作所有表,需要从模型中手动删除不需要的表。

在弹出的窗口中输入相关的数据库连接信息即可

点击高级,修改 Persist  Security Info 为 True。否则会出现错误

我们先看一下配置文件,可以看到在配置文件中Entity Framework Power Tools已经自动对数据库连接串进行了配置,添加了名为“SchoolContext”的数据库连接串:

在项目中我们还可以看到Entity Framework Power Tools自动创建了一个Models文件夹,这里除了“School”类还有所有的数据类。在Models文件夹下还有一个“Mapping”文件夹,这里放了数据类与数据库的映射配置类,可以看出Entity Framework Power Tools通过fluent API的方式进行映射细节配置(目前Entity Framework Power Tools还不支持Data Annotations方式),关于配置类的具体细节我们这里暂不进行详细介绍。

操作EF 进行基本的增删改查

学习了如何通过工具生成代码后,我们再学习一下如何使用EF进行最基本的增删改查操作。

一般查询

var Courses = db.Courses.Where(c => c.Title == "Physics").OrderBy(c => c.Title);foreach (var c in Courses){Console.WriteLine(c.Title);}

添加

Models.Course model = new Course();
model.Title = "test";
model.DepartmentID = 1;
model.CourseID = 4;
db.Courses.Add(model);
db.SaveChanges();

修改

Models.Course model = new Course();
var result = (from r in db.Courses where r.Title.StartsWith("test") orderby r.Title descending select r).FirstOrDefault();model = (Course)result;
model.Credits = 4;
model.Title = "good job";
db.SaveChanges();

删除

var result = from r in db.Courseswhere r.CourseID == 4select r;
foreach (var c in result){db.Courses.Remove(c);}
db.SaveChanges();

简单的函数计算(count,min,max,sum)

var result = (from r in db.StudentGradeswhere r.StudentID == 2select r).Sum(p=>p.Grade);
Console.WriteLine(result);
var result = (from r in db.StudentGradeswhere r.StudentID == 2select r).Max(p => p.Grade);Console.WriteLine(result);

分页数据查询

var result = (from r in db.Peopleorderby r.LastName ascendingselect r).Skip(5).Take(5);
foreach(var c in result){Console.WriteLine(c.LastName);}

分组group by

var ss = from r in db.StudentGradesorderby r.StudentID descendinggroup r by new { r.StudentID, r.CourseID } into gselect new{g.Key,grade = g.Sum(r => r.Grade)};
foreach (var r in ss){string output = "StudentID:" + r.Key.StudentID + " CourseID:" + r.Key.CourseID+" grade"+r.grade;Console.WriteLine(output);}

复杂的关联查询

var d = db.Database.SqlQueryForDynamic(@"SELECTc.CourseID,d.[Name] as department,c.Title
FROMCourse c INNER JOIN Department d ON c.DepartmentID = d.DepartmentID");foreach (dynamic item in d){var s = item.Title;
Console.WriteLine(s);}
Console.ReadLine();

欢迎加入企鹅群238473238交流

http://files.cnblogs.com/williamzhu/EFPowerToolsSample.zip

转载于:https://www.cnblogs.com/williamzhu/p/4171901.html

ASP .NET MVC 之Entity Framework入门教程及源码相关推荐

  1. VS 2012 标配 Asp.net MVC 和 Entity Framework - mybatisnet 可能就显得路子野 了

    VS 2012 标配 Asp.net MVC 和 Entity Framework - mybatisnet 可能就显得路子野 了 太阳火神的美丽人生 (http://blog.csdn.net/op ...

  2. Entity Framework入门教程:创建实体数据模型

    下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...

  3. Framework入门のPiex 6P源码(下载/编译/刷机)

    文章目录 前言 第一步:源代码在哪里如何下载 第二步:如何编译,用到哪些命令,编译目标文件是什么 模拟器 真机 第三步:如何修改指定代码并重新安装到手机 第四步:如何阅读源代码 第五步:如何在Linu ...

  4. ef6 oracle 存储过程,Entity Framework入门教程(14)---DbFirst下的存储过程

    EF6中DbFirst模式下使用存储过程 我们已经知道EF可以将L2E或Entity SQL的查询语句自动转换成SQL命令,也可以根据实体的状态自动生成Insert/update/delete的Sql ...

  5. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

    ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...

  6. ADO.NET Entity Framework 入门示例向导(附Demo程序下载)

    ADO.NET Entity Framework 入门示例向导(附Demo程序下载) ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架, ...

  7. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)--初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  8. MVC中使用signalR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  9. Zend Framework 入门教程(简体中文版)

    Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com ...

最新文章

  1. 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍
  2. 代码农民从做事情的经验
  3. Spring Cloud 2021.0.1 发布
  4. C++ Opengl 绘制图像字符源码
  5. 笔记18 客户端跳转
  6. 如何吸引财富呢?请做这六件事吧!
  7. 互联网产品 从设计到运营 这中间提高须要关注的站点
  8. 【开发者portal在线开发插件系列一】profile和基本上下行消息
  9. java qq发送邮件
  10. watson机器人_使您的聊天机器人看起来更加智能! Watson Assistant的隐藏功能。
  11. 【论文解读】MV3D-Net、AVOD-Net用于自动驾驶的多视图3D目标检测网络
  12. JSONP原理以及示例
  13. Wagtail 教程 2:简单博客实现
  14. oracle 10015 trace name adjust_scn level level_num
  15. linux floating ip,neutron分配浮动IP(floating ip)的方法
  16. kubelet报错:Orphaned pod “$Pod“ found, but volume paths are still present on disk
  17. Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
  18. win10系统下MyEclipse10.7的激活
  19. 用户生命周期(User Lifetime)
  20. [刷题]leetcode\977_有序数组的平方

热门文章

  1. 我是最棒的,我一定会成功!
  2. undefined reference to `cv::VideoCapture::VideoCapture()'
  3. openssh升级sftp_OpenSSH 8.2 发布 包括 sftp 客户端和服务器支持
  4. 【数据结构基础笔记】【队列】
  5. Scala中的do ... while循环
  6. 超图软件试用许可操作步骤_软件中的操作步骤
  7. c++ stl队列初始化_声明,初始化和访问向量| C ++ STL
  8. java删除指定索引元素_将对象/元素添加到列表中的Java指定索引处
  9. ffplay分析 (音视频同步:主时钟为音频)
  10. workerman json mysql_workerman-json-rpc