使用新數(shù)據(jù)庫在 ASP.NET Core 上開始使用 EF Core

2019-04-17 08:58 更新

在本教程中,你將使用 Entity Framework Core 構建執(zhí)行基本數(shù)據(jù)訪問的 ASP.NET Core MVC 應用程序。 該教程使用遷移基于此數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫。

你可在 Windows 上使用 Visual Studio 2017,或在 Windows、macOS 或 Linux 上使用 .NET Core CLI 來學習本教程。

在 GitHub 上查看此文章的示例:

系統(tǒng)必備

安裝以下軟件:

創(chuàng)建新項目

  • 打開 Visual Studio 2017
  • “文件”>“新建”>“項目”
  • 從左菜單中選擇“已安裝”>“Visual C#”>“.NET Core”。
  • 選擇“ASP.NET Core Web 應用程序”。
  • 輸入“EFGetStarted.AspNetCore.NewDb”作為名稱,然后單擊“確定”。
  • 在“新建 ASP.NET Core Web 應用程序”對話框中:
    • 確保在下拉列表中選擇“.NET Core”和“ASP.NET Core 2.1”
    • 選擇“Web 應用程序(模型視圖控制器)”項目模板
    • 確保將“身份驗證”設置為“無身份驗證”
    • 單擊“確定”

警告:如果你使用“單獨用戶帳戶”(而不是“無”)進行身份驗證,Entity Framework Core 模型會添加到 Models\IdentityModel.cs 中的項目。 使用在本教程中學習的技巧,可以選擇添加第二個模型,或者擴展此現(xiàn)有模型以包含實體類。

安裝 Entity Framework Core

要安裝 EF Core,請為要作為目標對象的 EF Core 數(shù)據(jù)庫提供程序安裝程序包。 有關可用提供程序的列表,請參閱數(shù)據(jù)庫提供程序

對于本教程,無需安裝提供程序包,因為本教程使用 SQL Server。 SQL Server 提供程序包包含在 Microsoft.AspnetCore.App 元包中。

創(chuàng)建模型

定義構成模型的上下文類和實體類。

  • 右鍵單擊“Models”文件夾,然后選擇“添加”>“類”。

  • 輸入“Model.cs”作為名稱,然后單擊“確定”。

  • 將此文件的內容替換為以下代碼:

    C#
    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace EFGetStarted.AspNetCore.NewDb.Models
    {
        public class BloggingContext : DbContext
        {
            public BloggingContext(DbContextOptions<BloggingContext> options)
                : base(options)
            { }
    
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
        }
    
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public ICollection<Post> Posts { get; set; }
        }
    
        public class Post
        {
            public int PostId { get; set; }
            public string Title { get; set; }
            public string Content { get; set; }
    
            public int BlogId { get; set; }
            public Blog Blog { get; set; }
        }
    }
    

生產(chǎn)應用通常會將每個類放在單獨的文件中。 為簡單起見,本教程將這些類放在一個文件中。

使用依賴注入注冊上下文

若要使 BloggingContext 可用于 MVC 控制器,請在 Startup.cs 中將其注冊為服務。

在應用程序啟動過程中,通過依賴關系注入 注冊服務(如 BloggingContext),以便能夠通過構造函數(shù)的參數(shù)和屬性向使用服務的組件(如 MVC 控制器)自動提供該服務。

  • 在 Startup.cs 中,添加以下 using 語句:

    C#
    using EFGetStarted.AspNetCore.NewDb.Models;
    using Microsoft.EntityFrameworkCore;
    
  • 將以下突出顯示的代碼添加到 ConfigureServices 方法:

    C#
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
    
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
        var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;ConnectRetryCount=0";
        services.AddDbContext<BloggingContext>
            (options => options.UseSqlServer(connection));
        // BloggingContext requires
        // using EFGetStarted.AspNetCore.NewDb.Models;
        // UseSqlServer requires
        // using Microsoft.EntityFrameworkCore;
    }
    

生產(chǎn)應用通常會將連接字符串放在配置文件或環(huán)境變量中。 為簡單起見,本教程在代碼中定義它。有關詳細信息,請參閱連接字符串 。

創(chuàng)建數(shù)據(jù)庫

以下步驟使用遷移創(chuàng)建數(shù)據(jù)庫。

  • “工具”>“NuGet 包管理器”>“包管理器控制臺”

  • 運行以下命令:

    PowerShell
    Add-Migration InitialCreate
    Update-Database
    

    如果收到錯誤,指出 The term 'add-migration' is not recognized as the name of a cmdlet,請關閉并重新打開 Visual Studio。

    Add-Migration 命令為遷移搭建基架,以便為模型創(chuàng)建一組初始表。 Update-Database 命令創(chuàng)建數(shù)據(jù)庫并向其應用新的遷移。

創(chuàng)建控制器

生成 Blog 實體控制器和視圖的基架。

  • 在“解決方案資源管理器”中,右鍵單擊“控制器”文件夾,然后選擇“添加”>“控制器”。
  • 選擇“視圖使用 Entity Framework 的 MVC 控制器”,然后單擊“添加”。
  • 將“模型類”設置為“Blog”,將“數(shù)據(jù)上下文類”設置為“BloggingContext”。
  • 單擊 添加。

基架引擎創(chuàng)建以下文件:

  • 控制器 (Controllers/BlogsController.cs)
  • “創(chuàng)建”、“刪除”、“詳細信息”、“編輯”和“索引”頁面的 Razor 視圖 (Views/Blogs/*.cshtml)

運行此應用程序

  • 調試 > 開始執(zhí)行(不調試)
  • 導航到 /Blogs
  • 使用“新建”鏈接創(chuàng)建一些博客條目。創(chuàng)建頁面
  • 測試“詳細信息”、“編輯”和“刪除”鏈接。索引頁


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號