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,如下圖所示。
單擊「確定」按鈕以後,出現選擇模板對話框;選擇Web應用程序模板,並將「身份驗證」設置為「不進行身份驗證」,如下圖所示。
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 4.創建資料庫 打開Startup.cs,在ConfigureServices方法中添加如下代碼: public void ConfigureServices(IServiceCollection services) 需要 using Microsoft.EntityFrameworkCore; 添加好以後,接著來安裝引用Microsoft.EntityFrameworkCore.Tools。使用NuGet命令行: Install-Package Microsoft.EntityFrameworkCore.Tools 下面開始創建資料庫,這裡在程序包管理控制台執行命令進行遷移及更新。
{
public DataContext(DbContextOptions
: base(options)
{
}
public DbSet
}
{
var connection = "Filename=./efcoredemo.db";
services.AddDbContext
// Add framework services.
services.AddMvc;
}
打開VS 2017菜單 工具→NuGet包管理器→程序包管理控制台。
首先輸入Add-Migration MyFirstMigration執行,接著輸入Update-Database執行。出現Done.表示成功創建資料庫。
如果需要使用dotnet ef 命令,首先打開EFCoreDemo.csproj 文件編輯,在Project節點中添加如下
如果是在VS中編輯則會自動還原,外面編輯需要手動dotnet restore。
還原好以後就可以使用dotnet ef 命令。
在命令提示符中首先輸入dotnet ef migrations add MyFirstMigration,然後再輸入dotnet ef database update。
出現成功的提示,這樣我們就創建好了資料庫,如下圖所示。更多EF命令介紹請輸入dotnet ef -h。
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 = "用戶";
}
Id | 用戶名 |
---|---|
@Html.DisplayFor(modelItem => item.Id) | @Html.DisplayFor(modelItem => item.UserName) |
接下來再添加一個 Register視圖。
@model EFCoreDemo.Models.User
@{
ViewBag.Title = "用戶添加";
}
在調試那裡選擇EFCoreDemo啟動,最後程序運行起來,在地址欄輸入http://localhost:5000/User/Register訪問註冊。
在註冊那裡填入用戶信息。註冊成功後將跳轉至http://localhost:5000/User,如下圖所示。
本文是對《ASP.NET Core跨平台開發從入門到實戰》 6.2 Code First的更新,亦是對之前的博文ASP.NET Core 開發 - Entity Framework (EF) Core的更新。
如果你覺得本文對你有幫助,請點擊「推薦」,謝謝。
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銷路艱難