注册 登录
编程论坛 C# 论坛

摆脱ADO.NET瓶颈 手把手教你学习EF6到EF7(二)

wangnannan 发布于 2015-08-06 13:54, 4865 次点击
第二个帖子呢 打算从EF5 后的EFCodeFirst开始 有兴趣的朋友呢 可以看我的ORM入门帖子 https://bbs.bccn.net/thread-456145-1-1.html
EFCodeFirst什么意思呢 就是先代码,再由代码生成数据库的开发方式。
呵呵 很有意思吧 是不是感觉和传统的方式有所不同
先废话少说 走起准备工作
(一) NuGet
Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。
Nuget是 ASP .NET Gallery 的一员。NuGet 是免费、开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库。
当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到Nuget的站点。如果想要使用别人已经开发好的工具或是库,只需要从站点获得这个package,并且安装到自己的Visual Studio项目或是解决方案里。
NuGet能更方便地把一些dll和文件(如jquery)添加到项目中,而不需要从文件中复制拷贝。

咱们就用NuGet安装 EFCodeFirst
NuGet的官网地址:http://nuget.
NuGet的运行环境:
•Windows 7
•Windows Vista SP1
•Windows Server 2008
•Windows Server 2008 R2
•Windows Server 2003 SP2
•Windows XP SP3
这里我用2008 R2给大家介绍
只有本站会员才能查看附件,请 登录


NuGet的安装(我的开发环境是Visual Studio 2013 故以此为例 有的vs2013集成 VS2010需要单独下载 ):




[ 本帖最后由 wangnannan 于 2015-8-6 14:17 编辑 ]
20 回复
#2
wangnannan2015-08-06 13:56
只有本站会员才能查看附件,请 登录


从VS2013的主菜单->工具->扩展和更新,打开如下界面,点击左侧的“联机库”。
只有本站会员才能查看附件,请 登录



[ 本帖最后由 wangnannan 于 2015-8-6 13:57 编辑 ]
#3
wangnannan2015-08-06 13:57
扩展管理器会自动从微软网站检索所有可用的扩展,并将结果显示在中间的列表中。选择“NuGet Package Manager”,点击“下载”按钮。
#4
wangnannan2015-08-06 14:01
只有本站会员才能查看附件,请 登录

安装完就是这样紫了 有两个 选项一个是控制台 一个是程序包管理器设置
#5
wangnannan2015-08-06 14:06
打开控制台直接输入命令 get-package -remote -filter entityframework
只有本站会员才能查看附件,请 登录

都列出来了 一回车,将会出现如下,有一大堆数据的列表
这里,我们要注意两行,一个是Id,一个是Version。Id是用于指出什么包,Version是对应的版本。我们从表中可以看出。有许多包是同名的, 但是版本不同。因此,遇到两个及两个以上包名相同的包,除了用Id指出来外,还要通过Version来圈字哪一个他。不是那个他,而是这个他。

#6
wangnannan2015-08-06 14:08
install-package -id EntityFramework -Version 6.1.3 比方说我们要安装这节我们要用到的EF6
只有本站会员才能查看附件,请 登录

#7
wangnannan2015-08-06 14:15
有个问题需要特别注意一下 如果没有建立解决方案 直接安装会出现如下问题
只有本站会员才能查看附件,请 登录

#8
wangnannan2015-08-06 14:16
只有本站会员才能查看附件,请 登录
开始安装
#9
wangnannan2015-08-06 14:18
只有本站会员才能查看附件,请 登录
成功安装后就会看到如下提示
#10
wangnannan2015-08-06 14:39
好安装成功。下面就要安装EFCodeFirst
只有本站会员才能查看附件,请 登录

#11
wangnannan2015-08-06 14:42
常用的命令也就这些
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#12
wangnannan2015-08-06 14:44
这里我将用一个非常简单的例子来演示一下Code First在MVC中的使用,主要还是展示Code First 具体是怎么工作的。
#13
wangnannan2015-08-06 14:44
这块就引用网上的例子了 我在加点我的注释
#14
wangnannan2015-08-06 14:49
只有本站会员才能查看附件,请 登录
新建一个MVC项目
#15
wangnannan2015-08-06 14:57
因为Code First需要EntityFramework支持,项目创建好后在引用里面系统已经自动为我们引用了EntityFramework程序集,如果没有需要手动引用进来。
只有本站会员才能查看附件,请 登录
弹出界面选择安装即可
我们首先在Model中创建一个博客类来保存一篇博客的基本信息,它包含一个博客标识BlogId, 标题Title还有创建日期CreateDate。
在Model文件夹上右击选择Add->Class。
在Name中输入Blog再点击Add。
只有本站会员才能查看附件,请 登录


 同样的方法我们再新建一个类,命名为BlogEntities.cs,这个类跟Blog类的功能是不同的,我们将在代码里将它定义为从DBContex 继承,这样这个BlogEntities上下文类将扮演着与数据库沟通的重要角色,在这里面可以定义需要的表,项目运行后这些表将自动在数据库创建。这里,我们用刚才定义好的Blog来定义一个Dbset,代码如下
只有本站会员才能查看附件,请 登录

#16
wangnannan2015-08-06 15:09
DBContext是什么呢  以前EF5以前的版本呢 是ObjectContext  可以这样来理解ObjectContext就是数据库的访问实体上下文 ObjectContext 支持查询、更改跟踪和保存回数据库。 ObjectSet 用于封装类似对象集。  EF6呢 官方推荐DbContext DbContext 公开了 ObjectContext 最常用的功能,并提供了一些确实有用的附加功能。 两者呢基本差不多 唯一区别呢 DbContext 属于新类

#17
wangnannan2015-08-06 15:10
上面我们把模型准备好了,现在定义Controller。但在进行这一步前,我们需要Ctrl+Shift+B编译一下程序,以便系统知道我们之前定义好 的Blog类和BlogEntities类。右击Controllers文件夹选择Add->Controller打开添加Controller对 话框,将其命名为HomeController(MVC的Controller,当然你也可以随便命名,只不过在打开网页时需要手动输入路径),此刻数据 库还没有被创建,并且呆会自动创建后里面也是空的没有数据,我们需要向里面添加一些数据,所以这里模板我们选择带有CRUD(增删除改查)功能的,再将下 面的模型类选为Blog,上下文类选为BlogEntities,系统会自动实现CRUD操作,不用我们手动编写。
#18
wp2319572015-08-06 16:10
太高深了   以为天书
#19
wangnannan2015-08-06 16:11
回复 18楼 wp231957
你快拉到吧  这都是现在公司都用上了在普通不能普通的东西 一点也不高深

[ 本帖最后由 wangnannan 于 2015-8-6 16:24 编辑 ]
#20
wp2319572015-08-06 16:25
我就会printf("hello world")
#21
wangnannan2015-08-06 16:33
只有本站会员才能查看附件,请 登录

附加安装mvc 的方法解决方案右键
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

1