ASP .NET MVC 之Entity Framework入门教程及源码
本文主要的目的是
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入门教程及源码相关推荐
- VS 2012 标配 Asp.net MVC 和 Entity Framework - mybatisnet 可能就显得路子野 了
VS 2012 标配 Asp.net MVC 和 Entity Framework - mybatisnet 可能就显得路子野 了 太阳火神的美丽人生 (http://blog.csdn.net/op ...
- Entity Framework入门教程:创建实体数据模型
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...
- Framework入门のPiex 6P源码(下载/编译/刷机)
文章目录 前言 第一步:源代码在哪里如何下载 第二步:如何编译,用到哪些命令,编译目标文件是什么 模拟器 真机 第三步:如何修改指定代码并重新安装到手机 第四步:如何阅读源代码 第五步:如何在Linu ...
- ef6 oracle 存储过程,Entity Framework入门教程(14)---DbFirst下的存储过程
EF6中DbFirst模式下使用存储过程 我们已经知道EF可以将L2E或Entity SQL的查询语句自动转换成SQL命令,也可以根据实体的状态自动生成Insert/update/delete的Sql ...
- 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 ...
- ADO.NET Entity Framework 入门示例向导(附Demo程序下载)
ADO.NET Entity Framework 入门示例向导(附Demo程序下载) ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架, ...
- .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)--初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...
- MVC中使用signalR入门教程
一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...
- Zend Framework 入门教程(简体中文版)
Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com ...
最新文章
- 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍
- 代码农民从做事情的经验
- Spring Cloud 2021.0.1 发布
- C++ Opengl 绘制图像字符源码
- 笔记18 客户端跳转
- 如何吸引财富呢?请做这六件事吧!
- 互联网产品 从设计到运营 这中间提高须要关注的站点
- 【开发者portal在线开发插件系列一】profile和基本上下行消息
- java qq发送邮件
- watson机器人_使您的聊天机器人看起来更加智能! Watson Assistant的隐藏功能。
- 【论文解读】MV3D-Net、AVOD-Net用于自动驾驶的多视图3D目标检测网络
- JSONP原理以及示例
- Wagtail 教程 2:简单博客实现
- oracle 10015 trace name adjust_scn level level_num
- linux floating ip,neutron分配浮动IP(floating ip)的方法
- kubelet报错:Orphaned pod “$Pod“ found, but volume paths are still present on disk
- Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
- win10系统下MyEclipse10.7的激活
- 用户生命周期(User Lifetime)
- [刷题]leetcode\977_有序数组的平方
热门文章
- 我是最棒的,我一定会成功!
- undefined reference to `cv::VideoCapture::VideoCapture()'
- openssh升级sftp_OpenSSH 8.2 发布 包括 sftp 客户端和服务器支持
- 【数据结构基础笔记】【队列】
- Scala中的do ... while循环
- 超图软件试用许可操作步骤_软件中的操作步骤
- c++ stl队列初始化_声明,初始化和访问向量| C ++ STL
- java删除指定索引元素_将对象/元素添加到列表中的Java指定索引处
- ffplay分析 (音视频同步:主时钟为音频)
- workerman json mysql_workerman-json-rpc