这一章节中,咱们开始认识一下MVC中的M,也就是Model。
Entity Framework Core是微软提供给开发者的一个ORM框架,相似java中的MyBatis和Hibernate。将Plain Old CLR Objects(POCO)类能够直接转换为数据库中的增删改查的操做代码,减小重复开发代码量。java
POCO
这种类是只有属性没有方法的类,纯粹表示数据,能够用于和数据库之间的映射。sql
EF Core库只要求咱们写POCO类,而后该库就能够根据这些类自动在数据库中创建对应的表,以及相关的增删改查。数据库
新建modeljson
Movie.cs mvc
using System; using System.ComponentModel.DataAnnotations; namespace MvcMovie.Models { public class Movie { public int Id { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } } }
安装EFCore SqlProvider
示例选用SqlServer Local数据库,专门用于开发环境的sql server数据库,所以须要安装EFcore库须要用到的sqlServer的Provider库,
选中Tools工具>NuGet 包管理器 > 程序包管理器控制台 (PMC).app
Install-Package Microsoft.EntityFrameworkCore.SqlServer
在安装provider的时候,由于依赖,因此也会自动安装EFCore库。框架
建立数据库上下文
所谓数据库上下文,就是告诉EFCore,咱们须要经过什么类创建表数据,以及对该类在表中的增删改查。
建立Data文件夹,添加MvcMovieContext.cs,添加代码。ide
using Microsoft.EntityFrameworkCore; using MvcMovie.Models; namespace MvcMovie.Data { public class MvcMovieContext : DbContext { public MvcMovieContext (DbContextOptions<MvcMovieContext> options) : base(options) { } public DbSet<Movie> Movie { get; set; } } }
EFCore须要的上下文都须要以 DbContext做为基类,DbSet表示一个集合,对应数据库中的一张表,其中的实体对象则对应一行记录。这里Movie为DbSet类型,因此表名为Movie,DbSet中存储的是Movie即咱们自定义的类型,对应一行记录的结构。工具
注册数据库上下文
ASP.net core基本使用了依赖注入的技术思想。EFCore DBContext做为一种服务须要注册进去才能使用。 在Startup.cs中进行注册,添加以下2行代码
using MvcMovie.Data; using Microsoft.EntityFrameworkCore;
而后在ConfigureServices中添加一行代码,以下斜体,
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); * services.AddDbContext<MvcMovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));* }
Configuration.GetConnectionString("MvcMovieContext")是从文件appsettings.json中获取数据库链接字符串。
在appsettings.json中添加一个key:value
"ConnectionStrings": { "MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-1;Trusted_Connection=True;MultipleActiveResultSets=true" }
搭建基架
这是一个专门用于对一组常常关联在一块儿的开发步骤进行总体建立的工具。好比建立一个模型,会随后建立控制器,通常都会要有增删改查以及对应视图这些开发操做,经过这个功能,就能够一步搭建完毕。无需重复劳动。
右键Controllers选择添加>新搭建基架项目,选择Entity FrameWork的MVC。
弹出对话框选择Model class,上下文选择MvcMovieContext,其余都是默认便可。
而后基架工具会建立两类东西:
1. Controller: Controllers/MoviesController.cs 2. View:Views/Movies/*.cshtml (Create, Delete, Details, Edit, and Index)
也就是说,经过Model和MvcMoviewContext上下文,就把MVC中剩下的VC两样代码全都自动建立完成了。这个过程,微软给出的英文是scaffolding
数据库
MVC都准备好了,接下来就是把数据库建立了,以及对应表建立完成。这个操做,叫作Initial migration。中文翻译的话,应该叫初始化迁移。
migration是EF core的一个功能。用于将Model经过DBContext上下文映射到数据库,而且同步数据库中的表结构。
在程序包管理器控制台 (PMC).中执行以下
Add-Migration InitialCreate Update-Database
第一行执行,会根据mvcDBContext生成一个Migrations/{timestamp}_InitialCreate.cs文件。
第二句执行,则会执行Migrations/{time-stamp}_InitialCreate.cs文件中的up方法。
完成到如今。新建一个MVC以及对应数据库的过程就完成了。 运行一下,而后经过http://localhost:59191/Movies 来访问。