當前位置:
首頁 > 知識 > EF Core學習Code First

EF Core學習Code First

下面通過實例來學習EF Core Code First,也就是通過EF Core遷移來完成從模型生成資料庫。

本實例使用EntityFrameworkCore SQLite 資料庫進行介紹,大家也可以無縫切換到其他資料庫。

目前 EF Core 支持的資料庫:

  • Microsoft SQL Server
  • SQLite
  • Postgres (Npgsql)
  • SQL Server Compact Edition
  • InMemory (for testing purposes)
  • MySQL
  • IBM DB2

1.新建項目

新建項目,選擇.NET Core,然後選擇ASP.NET Core Web Application (.NET Core),將其命名為EFCoreDemo,如下圖所示。

EF Core學習Code First

單擊「確定」按鈕以後,出現選擇模板對話框;選擇Web應用程序模板,並將「身份驗證」設置為「不進行身份驗證」,如下圖所示。

EF Core學習Code First

2.引用Entity Framework Core

在NuGet命令行下安裝引用:


Install-Package Microsoft.EntityFrameworkCore.Sqlite

也可以使用NuGet包在管理器中搜索Microsoft.EntityFrameworkCore.Sqlite來安裝。

3.創建實體

在項目中添加一個Models文件夾,然後在Models文件夾通過右鍵快捷菜單新建一個類User.cs:

public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}

繼續新建一個類DataContext.cs:

public class DataContext : DbContext
{
public DataContext(DbContextOptions options)
: base(options)
{
}
public DbSet Users { get; set; }
}

4.創建資料庫

打開Startup.cs,在ConfigureServices方法中添加如下代碼:

public void ConfigureServices(IServiceCollection services)
{
var connection = "Filename=./efcoredemo.db";
services.AddDbContext(options => options.UseSqlite(connection));
// Add framework services.
services.AddMvc;
}

需要 using Microsoft.EntityFrameworkCore;

添加好以後,接著來安裝引用Microsoft.EntityFrameworkCore.Tools。使用NuGet命令行:


Install-Package Microsoft.EntityFrameworkCore.Tools

下面開始創建資料庫,這裡在程序包管理控制台執行命令進行遷移及更新。

打開VS 2017菜單 工具→NuGet包管理器→程序包管理控制台。

首先輸入Add-Migration MyFirstMigration執行,接著輸入Update-Database執行。出現Done.表示成功創建資料庫。

EF Core學習Code First

如果需要使用dotnet ef 命令,首先打開EFCoreDemo.csproj 文件編輯,在Project節點中添加如下



如果是在VS中編輯則會自動還原,外面編輯需要手動dotnet restore。

還原好以後就可以使用dotnet ef 命令。

在命令提示符中首先輸入dotnet ef migrations add MyFirstMigration,然後再輸入dotnet ef database update。

出現成功的提示,這樣我們就創建好了資料庫,如下圖所示。更多EF命令介紹請輸入dotnet ef -h。

EF Core學習Code First

5.項目使用

在Controllers文件夾上右擊,在彈出的右鍵快捷菜單中單擊「添加」→「新建項」,新建一個MVC控制器類UserController:

UserController.cs

public class UserController : Controller
{
private DataContext _context;

public UserController(DataContext context)
{
_context = context;
}
// GET: //
public IActionResult Index
{
return View(_context.Users.ToList);
}

public IActionResult Register
{
return View;
}

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Register(User registeruser)
{
if (ModelState.IsValid)
{
_context.Users.Add(registeruser);
_context.SaveChanges;
return RedirectToAction("Index");
}
return View(registeruser);
}
}

你會注意到控制器需要DataContext作為構造函數的參數。ASP.NET Core依賴注入將通過構造函數注入DataContext到控制器。

Index action顯示所有用戶,Register action註冊用戶是將用戶添加至用戶表。

然後在Views文件夾中添加一個User文件夾,然後添加一個Index視圖:

Index.cshtml

@model IEnumerable

@{
ViewBag.Title = "用戶";
}

@foreach (var item in Model)
{

}

Id 用戶名
@Html.DisplayFor(modelItem => item.Id) @Html.DisplayFor(modelItem => item.UserName)

接下來再添加一個 Register視圖。

@model EFCoreDemo.Models.User
@{
ViewBag.Title = "用戶添加";
}



在調試那裡選擇EFCoreDemo啟動,最後程序運行起來,在地址欄輸入http://localhost:5000/User/Register訪問註冊。

EF Core學習Code First

在註冊那裡填入用戶信息。註冊成功後將跳轉至http://localhost:5000/User,如下圖所示。

EF Core學習Code First

本文是對《ASP.NET Core跨平台開發從入門到實戰》 6.2 Code First的更新,亦是對之前的博文ASP.NET Core 開發 - Entity Framework (EF) Core的更新。

如果你覺得本文對你有幫助,請點擊「推薦」,謝謝。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

cordova 插件開發

TAG:達人科技 |

您可能感興趣

G?irl℡Before I Ever Met You In Paris
再談BGP Confederation與Route Reflection
Correct Yourself Before You Correcting Others 正人先正己
Dymamic Force On Force/Home Defence Training
TEFAF Maastricht開幕,展出Cindy Chao、Siegelson Among等新作珠寶
Firefox Reality將登陸HoloLens 2
Prefaces from Curators-Li Baofeng
Understanding Causes And Effects,Then There Are No Annoyances
Invited Lectures by Editor-in-Chief of JGR-Planets
深入 JVM 分析 spring-boot 應用 hibernate-validatorNoClassDefFoundError
Chrome 和 Firefox 將有 Windows on ARM 原生版本
瀏覽器三巨頭PK大戰:Chrome vs Firefox vs Edge
Chrome部署Material Design:似Firefox早期版本
WebXR瀏覽器Firefox Reality登陸Oculus Quest
Firefox 的User Agent 將移除 CPU 架構信息
The Root Guru With Three Kindnesses Is the Most Grateful and
Mozilla Firefox Quantum將回歸Firefox Browser命名
極簡伊拉克當代史 A Very Brief Intro to Iraq Contemporary History
BMC Biomedical Engineering編輯Alan Lefor教授訪談實錄
「Stars and Stripes」再加「歪斜」款!UNDEFEATED x adidas UltraBoost銷路艱難