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”搜索即可找到最新的扩展

 

wps4F6A.tmp

 

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

wps9003.tmp

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

wpsB668.tmp

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

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

 

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

 

wpsB570.tmp

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

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

wps2053.tmp

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

wps86A5.tmp

 

 

反向工程生成POCO代码

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

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

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

 

wpsE77B.tmp

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

wps4E49.tmp

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

wps9D34.tmp

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

wpsDDDD.tmp

在项目中我们还可以看到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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习的练功方式(六)——朴素贝叶斯

文章目录致谢6 朴素贝叶斯6.1 概述6.2 概率论6.2.1 大数定律6.2.2 基本概念6.2.3 极大似然估计6.2.4 多项式分布6.2.4.1 伯努利分布6.2.4.2 二项分布6.2.5 朴素贝叶斯6.3 朴素贝叶斯文本分类6.3.1 一个例子6.3.2 拉普拉斯平滑系数6.3.3 算法实现6.4 贝叶斯分类器6.4.1 多项式贝…

ABAP中创建动态内表的三种方法(转载)

BAP中创建动态内表的三种方法 第一种: 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致,可以直接使用CREATE DATA生成,当然也可以是自定义类型。 比如要产生和数据表MARA结构一致的动态内表: DATA : DY_TABLE TYPE REF TO D…

个人简介

我叫范华万,今天22岁,来自于福建省。目前在闽江学院就学。我学的是软件工程软件服务开发专业,能从事网站设计、java工程师、ps技术、c、数据库管理。本人性格乐观、开朗,有上进心、进取心,对学习认真负责,I…

数据库杂谈(八)——查询优化

文章目录8 查询优化8.1 概述8.2 查询数和语法树8.3 代数优化8.4 物理优化8.5 连接操作优化8.5.1 嵌套循环法8.5.2 利用B树索引或哈希索引寻找匹配元组法8.5.3 散列连接法8.6 后话8 查询优化 8.1 概述 我们不管是在数据库软件如MySQL、SQLServer等,还是通过应用程序…

Android-入门学习笔记-使用 CursorLoader 加载数据

3 使用这个代码片段开始练习 也可以参考 Codepath 教程 高级内容补充: 你是否在思考ArrayAdapter’s 的 getView() 方法和CursorAdapter 的 newView() 和 bindView() 方法? 你可以查看 CursorAdapter 类的源码. getView() 方法依然存在, 但是它实际根据是否存在列表项能够被循…

逆向思维求素数

1 #include <stdio.h>2 3 int main(void)4 {5 const int len 100;6 int prime[len];7 for (int i0; i<len; i)8 prime[i] 1; // 1 标记这个序号数为素数&#xff0c;0标记为非素数9 for (int x2; x<len; x) 10 { 11 for (in…

在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

1 ui-sref、$state.go 的区别 ui-sref 一般使用在 <a>...</a>&#xff1b; <a ui-sref"message-list">消息中心</a> $state.go(someState)一般使用在 controller里面&#xff1b; .controller(firstCtrl, function($scope, $state) {$state.…

机器学习的练功方式(七)——决策树

文章目录致谢7 决策树7.1 认识决策树7.2 决策树原理7.3 信息论7.3.1 信息熵7.3.1.1 熵7.3.1.2 信息7.3.1.3 信息熵7.3.2 信息增益7.4 决策树实现7.5 决策图7.6 后话致谢 信息熵是什么&#xff1f; - 知乎 (zhihu.com) 没有免费午餐定理_百度百科 (baidu.com) 7 决策树 决策树(…

[BZOJ3583]杰杰的女性朋友(矩阵快速幂)

杰杰的女性朋友 时间限制&#xff1a;10s 空间限制&#xff1a;256MB 题目描述 杰杰是魔法界的一名传奇人物。他对魔法具有深刻的洞察力&#xff0c;惊人的领悟力&#xff0c;以及令人叹为观止的创造力。自从他从事魔法竞赛以来&#xff0c;短短几年时间&#xff0c;就已经…

13.程序集篇

1.定义 程序集是.net框架应用程序生成块&#xff0c;它包含编译好的代码逻辑单元。 2.结构 程序集有描述他的程序清单、类型元数据&#xff0c;MSIL代码和资源组成。 程序集清单&#xff1a; 每一个程序集都包含描述该程序集中的各个元素彼此如何关联的数据集合。程序集清单包含…

机器学习的练功方式(八)——随机森林

文章目录致谢8 随机森林8.1 引入8.2 决策森林8.2.1 集成学习方法8.2.2 什么是随机森林8.2.3 无偏估计8.2.4 决策森林原理过程8.2.5 决策森林算法实现8.3 总结致谢 如何理解无偏估计&#xff1f;无偏估计有什么用&#xff1f;什么是无偏估计&#xff1f;_司南牧|知乎|博客|易懂教…

E20180219-hm-xa

comparison n. 比较&#xff0c;对照; [语] 比喻; 比较级; conjunction n. 连接; 连词; 联合&#xff0c;结合物; &#xff08;恒星、行星等的&#xff09; 合; [例句] assignment n. 分给&#xff0c;分配; 任务&#xff0c;工作&#xff0c;&#xff08;课外&#xff09;作…

这是我看过最精彩的回答

或许我没见过世面&#xff0c;但是这却是我看过对“怎么成为一个优秀的程序员&#xff0c;而不是一个优秀的码农&#xff1f;”最精彩的回答【全部复制粘贴】 其实我的心一直因为现在的工作【餐饮服务】而动摇&#xff0c;忽而想学网站&#xff0c;忽而c语言根基&#xff0c;忽…

免费LInux主机资源

一、m-net.arbornet.org注冊 &#xff08;1&#xff09;telnet m-net.arbornet.org vista系统默认是关闭telnet的&#xff08;由于不安全&#xff09;&#xff0c;须要开启。cmd->telnet&#xff08;2&#xff09;login:newuser password: (3) ssh m-net.arbornet.org vi的…

并行计算(一)——并行计算机系统及结构模型

致谢 SMP、COW、PVP、MPP计算机相关_神.秘.人的博客-CSDN博客_并行向量处理机 1 并行计算机系统及结构模型 1.1 并行计算 在下面的讲解之前&#xff0c;我们先看一下并行计算的量纲。 1.1.1 并行计算和计算机科学 随着计算机和计算机学科的发展&#xff0c;所有的学科都转向…

十、input与跳转

1.在loginAction&#xff0c;新增result <action name"LoginAction" method"login" class"com.myz.action.LoginAction"><!-- result不配置name表示默认为success,配置了name值则将与action中返回的字符串对应 --><result>/lo…

【机器学习实战】极大似然法

2019独角兽企业重金招聘Python工程师标准>>> http://baike.baidu.com/link?url3Ej1VIItwWd35sXeoRWRhcJkJLCFvzPzNIoTkAfai8ZIS4Ppcch4_maQ25FjNCU1Eplsp4k3oPKLyv6VIsPhsq 一、 最大似然法是一种具有理论性的点估计法&#xff0c;基本思想是&#xff0c;当从模型…

自定义配置节与配置节的读取

一、引子你是否也遇到过这样的问题&#xff1a;项目很多配置都写到了App.Config或Web.Config的AppSettings内&#xff0c;每个人都加了几条&#xff0c;到最后囤积了大量的配置&#xff0c;分不清哪个是有用的、哪个是没用的了。&#xff08;即便加了相关注释&#xff0c;也是乱…

机器学习的练功方式(九)——线性回归

文章目录致谢9 线性回归再相遇9.1 再遇9.1.1 概述9.1.2 矩阵和向量9.1.3 矩阵加减乘除9.1.3.1 矩阵——矩阵加减9.1.3.2 矩阵——标量加减乘9.1.3.3 矩阵——向量相乘9.1.3.4 矩阵——矩阵相乘9.1.3.5 矩阵的逆9.1.3.6 矩阵的转置9.1.4 向量化9.1.5 广义线性模型9.2 正规方程9.…

vsftp服务器搭建

1.FTP的主动模式和被动模式的区别&#xff1a; 最大的区别是数据端口并不总是20&#xff0c; 主动模式和被动模式的优缺点&#xff1a; 主动FTP对FTP服务器的管理和安全很有利&#xff0c;但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接&#xff0c;而…