MVC+EF 入门教程(二)
一、前沿
为了使以后项目分开,所以我会添加3个类库。用于存储 实体、数据库迁移、服务。这种思路是源于我使用的一个框架 ABP.有兴趣的您,可以去研究和使用这个框架。
二、修改本地连接
在项目中,找到 Web.config 在里面添加如下代码:
<!--SqlServer数据库连接-->
<connectionStrings>
<add name="Default" connectionString="Server=DESKTOP-M5G60B9; Database=MVCLearning; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>


name="Default" 这是给这个 connectionString 取名,Default 是任意的。
Server=DESKTOP-M5G60B9; 这是链接电脑的 SQLServer 的链接名。
Database=MVCLearning; 这是链接数据库的数据库名 MVCLearning 这个是任意的,你开心就好。
Trusted_Connection=True; 如果没有用户名和密码,我们用 True 来登录。 providerName="System.Data.SqlClient" 这是驱动 SQLServer 的命名空间。
三、添加类库
这里我说一下,添加类库。是我自己的想法,没有必要说一定添加,你可以添加也可以不添加。
添加类库的方式如下:解决方案 --> 添加 --> 新建项目 得到如下图所示,选择 类库(.NET Framework)

然后添加三个类库,如下图所示:

四、操作 EntityFrameworkDome 类库
在 EntityFrameworkDome 中添加文件夹为:EFramework 然后再新建一个 Class ,让他继承 DbContext 实例如下:

代码报错,属于正常,因为我们还没引入 EntityFramework. 的配置文件。 接下来我们来添加:
找到 引用 -->管理NuGet重新包 实例如下:

下载安装成功以后,在报错的地方,点击导入包,就可以得到如下图所示:

然后完善这个类,代码如下:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EntityFrameworkDome.EFramework
{
public class QSLServerContext:DbContext
{
public QSLServerContext() : base("Default") {//这个Degault 来源于链接字符串
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
}
五、在Core中创建实体
我们就按照我所学的教程来,我们就创建一个 ”博客 “ 实体。

实体的代码如下:
using System.Threading.Tasks; namespace Core.Blogs
{
public class Blog
{
//编号
public int Id { get; set; }
//标题
public string Title { get; set; }
//内容
public string Contect { get; set; }
//创建时间
public DateTime CreatedTime { get; set; }
}
}
六、生产数据库
在 Core 中添加完实体以后,回到 SQLServerContext 中添加一句代码:
public DbSet<Blog> Blogs { get; set; }
示例如下:

然后点击 工具-->NuGet包管理器-->程序包管理控制台

然后选择如下图所示:

我们在程序包管理器控制台中使用:Enable-Migrations -verbose 命令来应用Entity Framework的数据迁移功能:
Enable-Migrations -verbose
得到结果如下:

迁移命令应用成功后,我们可以在解决方案的中看到多出来一个名为Migrations的文件夹,里面包含一个名为Configurations.cs的文件,先不用理会这个cs文件,我们继续使用命令来处理接下来的步骤。接着使用:
Add-Migration InitialDatabase -verbose
得到结果如下:

同时你将还看到在 EntityFrameworkDome 中还添加了一个文件夹和在文件夹下多了一个 class 实例如下:

其中,InitialDatabase是数据迁移的名称,可以任意命名。命令成功运行后,Migrations文件夹中又会自动创建一个以时间戳开始的cs文件,如:201708101350430_InitialDatabase.cs 最后,我们应用Update-Database命令来生成数据库和实体对应的数据表:
Update-Database -verbose
执行后的结果:

然后你可以去打开你的数据库了,你会发现你的数据库和表都已经建好了。这就是 EF 操作数据库的强大之处:

这是不是很神奇,这也是我为什么不动数据库的原因。下一张我没操作刚刚生成的数据库。
MVC+EF 入门教程(二)的更多相关文章
- MVC+EF 入门教程(一)
一.前言 本人小白,写这篇博客是为了记录今天一天所学的知识,可能表达不是那么的准确和清楚,欢迎在留言区写下您的建议,欢迎纠错.希望这篇文章对你有所帮助学习 .Net MVC有所帮助.废话不多说了,我们 ...
- MVC+EF 入门教程(三)
一.前言 上一节,我们将了生成数据库,那么这张我就将操作设计库. 二.在 Aplication 定义服务 在 Application 中添加文件夹(Blog)和 操作类(BlogServer).实例如 ...
- MVC+EF 入门教程(四)
一.前言 写了那么久,那么现在给大家看效果了 二.效果展示 点击创建Blog 显示 编辑 编辑成功,是不是很酷. 删除 终于完成了,准备睡觉!虽然有很多不足的地方,我会慢慢的去改的.感谢累了一天的自己 ...
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- ASP.NET MVC 5 入门教程 (4) View和ViewBag
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html 上一节:ASP.NET MVC 5 入门教 ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- ASP.NET MVC 5 入门教程 (3) 路由route
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...
随机推荐
- iOS开发中获取视图在屏幕上显示的位置
在iOS开发中,我们会经常遇到一个问题,例如,点击一个按钮,弹出一个遮罩层,上面显示一个弹框,弹框显示的位置在按钮附近.如果这个按钮的位置相对于屏幕边缘的距离是固定的,那就容易了,可以直接写死位置.可 ...
- C++雾中风景3:const用法的小结
const作为C与C++共有的关键字,很多使用的方式大同小异.但由于C++是一门面向对象的语言,在类和对象中有更多的使用规则.之前学习C语言的时候就被const这个关键字搅得焦头烂额,正巧也借这篇文章 ...
- JavaWeb 学习之 JSTL
上一篇博文我们讲解了 MVC 小案例,案例中包含了基本的增.删.改.查,对这个案例的有兴趣的伙伴可以自己动手实践一下,去复习一下或者说是学点新的知识!如果有已经看过且实践过的伙伴相信对 JSP 页面中 ...
- servlet+jsp+jdbc实现从数据库查询用户信息到页面
工程创建这里就不在累述了,直接从显示User信息列表开始. 备注:我用的是servlet3的注解功能实现的,所以不需要配置web.xml 这是我的工程目录: 首先我们创建实体类: public cla ...
- Windows系统重装
http://www.ishuo.cn/show/76437.htmlhttp://jingyan.baidu.com/article/d8072ac45d4f60ec95cefdaa.html
- PHP yield 分析,以及协程的实现,超详细版(上)
参考资料 http://www.laruence.com/2015/05/28/3038.html http://php.net/manual/zh/class.generator.php http: ...
- 如何清除PHP中不需要的Layout模板
最简单的办法就是在需要清除的静态页的最前端加上 {__NOLAYOUT__} 就可以清除所有的layout效果, 继而设置自己的css.js效果.
- GC 基础(转)
转自:http://blog.csdn.net/ning109314/article/details/10411495/ = GC 基础 ===================== JAVA堆的描述如 ...
- 外观模式(Facade)
外观模式(Facade) 外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合 ...
- js实现关键词高亮显示 正则匹配
html 和ajax 部分就不写了,只需将需要匹配的文字传进去就可以了 比如匹配后台传回的字符串data.content中的关键词:直接调用: data.content = highLightKeyw ...