這一章節中,咱們開始認識一下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 來訪問。