一、前沿

    为了使以后项目分开,所以我会添加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 入门教程(二)的更多相关文章

  1. MVC+EF 入门教程(一)

    一.前言 本人小白,写这篇博客是为了记录今天一天所学的知识,可能表达不是那么的准确和清楚,欢迎在留言区写下您的建议,欢迎纠错.希望这篇文章对你有所帮助学习 .Net MVC有所帮助.废话不多说了,我们 ...

  2. MVC+EF 入门教程(三)

    一.前言 上一节,我们将了生成数据库,那么这张我就将操作设计库. 二.在 Aplication 定义服务 在 Application 中添加文件夹(Blog)和 操作类(BlogServer).实例如 ...

  3. MVC+EF 入门教程(四)

    一.前言 写了那么久,那么现在给大家看效果了 二.效果展示 点击创建Blog 显示 编辑 编辑成功,是不是很酷. 删除 终于完成了,准备睡觉!虽然有很多不足的地方,我会慢慢的去改的.感谢累了一天的自己 ...

  4. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  5. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  6. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  7. 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 入门教 ...

  8. 无废话ExtJs 入门教程二[Hello World]

    无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...

  9. ASP.NET MVC 5 入门教程 (3) 路由route

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...

随机推荐

  1. MarkdownPad2使用高亮插件

    MarkdownPad 2有插入代码块的功能,但样式却不尽人意,但又不想换个编辑器,找了挺多相关资料,最后在MarkdownPad 2集成prettify高亮插件. 如下相关资料: [HTML] Pr ...

  2. [转载] RED-BLACK(红黑)树的实现TreeMap源码阅读

    转载自http://lxy2330.iteye.com/blog/1664786 由于平衡二叉树与红黑树都是二叉排序树,又红黑树是对平衡二叉树的一种改进实现,所以它的很多思想算法都来源于排序二叉或平衡 ...

  3. Spring的69个知识点

    目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...

  4. 【架构研习】欲善其事先利其器-Robot Framework实战演练之框架的选择

    (原创文章,转载请注明出处.) 之前有提到过,自己曾基于公司业务系统从无到有码过一套测试框架,但由于开发时的思想同时受限于公司业务及框架的适用性上,导致最终虽然框架可完美支持业务,但在易用性.兼容性及 ...

  5. .net core2.0下使用Identity改用dapper存储数据

    前言. 已经好多天没写博客了,鉴于空闲无聊之时又兴起想写写博客,也当是给自己做个笔记.过了这么些天,我的文笔还是依然那么烂就请多多谅解了.今天主要是分享一下在使用.net core2.0下的实际遇到的 ...

  6. JSON.parse()和JSON.stringify()和eval('(' + result + ')')

    var str = '{"name":"huangxiaojian","age":"23"}' 结果: JSON.par ...

  7. mysql之ALTER COLUMN、CHANGE COLUMN、MODIFY COLUMN的区别

    ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子: alter table film alter column rental_duration set default 5; al ...

  8. String的Intern方法

    jdk6 和 jdk7 下 intern 的区别 相信很多 JAVA 程序员都做做类似 String s = new String("abc")这个语句创建了几个对象的题目. 这种 ...

  9. Bootstrap里的文件分别表示什么?都有什么用?

    bootstrap.css 是完整的bootstrap样式表,未经压缩过的,可供开发的时候进行调试用bootstrap.min.css 是经过压缩后的bootstrap样式表,内容和bootstrap ...

  10. java版Web Socket,实现消息推送

    # web socket是什么? WebSocket协议是基于TCP的一种新的网络协议. 它实现了浏览器与服务器全双工(full-duplex)通信,允许服务器主动发送信息给客户端. ## 用途 实时 ...