Entity Framework Core(EF Core) 最簡單的入門示例


概述

Entity Framework (EF) Core 是輕量化、可擴展、開源和跨平台版的常用 Entity Framework 數據訪問技術。

EF Core 可用作對象關系映射程序 (O/RM),以便於 .NET 開發人員能夠使用 .NET 對象來處理數據庫,這樣就不必經常編寫大部分數據訪問代碼了。

EF Core 支持多個數據庫引擎,請參閱數據庫提供程序了解詳細信息。

基於 .NET Core 的 EF Core 入門

在本教程中,將創建一個 .NET Core 控制台應用,該應用使用 Entity Framework Core 對 Microsoft SQL Server 數據庫執行數據訪問。

創建新項目

  • 新建控制台項目:

    執行 PowerShell 命令

    dotnet new console -o ConsoleApp
    

    如下圖

更改當前目錄

  • 將當前目錄更改為應用程序的目錄,如下所示:

    cd ConsoleApp
    

安裝 Entity Framework Core

  • 安裝 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools

    dotnet add package Microsoft.EntityFrameworkCore.SqlServer
    dotnet add package Microsoft.EntityFrameworkCore.Tools
    
  • 運行 dotnet restore 來安裝新的程序包。

創建模型

  • 使用以下內容創建一個新的 Model.cs 文件。

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace ConsoleApp
    {
        public class BloggingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlServer("Server=你的數據庫地址;Database=ConsoleApp;User Id=你的數據庫賬號;Password=你的數據庫密碼;");
            }
        }
    
        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; }
        }
    }
    

    在實際應用程序中,應將每個類放在單獨的文件中,並將連接字符串放在配置文件或環境變量中。 為簡化本教程,所有內容均放在一個文件中。

創建數據庫

有了模型后,即可通過遷移創建數據庫。

  • 運行 dotnet ef migrations add InitialCreate 以為遷移搭建基架,並為模型創建一組初始表。
  • 運行 dotnet ef database update 以將新遷移應用到數據庫。 在應用遷移之前,此命令可創建數據庫。

使用模型

  • 打開 Program.cs 並將內容替換為以下代碼:

    using System;
    
    namespace ConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (var db = new BloggingContext())
                {
                    db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    var count = db.SaveChanges();
                    Console.WriteLine("{0} records saved to database", count);
    
                    Console.WriteLine();
                    Console.WriteLine("All blogs in database:");
                    foreach (var blog in db.Blogs)
                    {
                        Console.WriteLine(" - {0}", blog.Url);
                    }
                }
            }
        }
    }
    
  • 運行 dotnet run 從控制台測試應用。

基於 ASP.NET Core 的 EF Core 入門

在本教程中,將使用 Entity Framework Core 構建執行基本數據訪問的 ASP.NET Core MVC 應用程序。

創建新項目

  • 打開 Visual Studio 2017

  • “文件”>“新建”>“項目”

  • 從左菜單中選擇“已安裝”>“Visual C#”>“.NET Core”。

  • 選擇“ASP.NET Core Web 應用程序”。

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

  • 在“新建 ASP.NET Core Web 應用程序”對話框中:

  • 確保在下拉列表中選擇“.NET Core”和“ASP.NET Core 2.1”

  • 選擇“Web 應用程序(模型視圖控制器)”項目模板

  • 確保將“身份驗證”設置為“無身份驗證”

  • 單擊“確定”

安裝 Entity Framework Core

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

創建模型

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

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

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

    using System.Collections.Generic;
    using Microsoft.EntityFrameworkCore;
    
    namespace WebApplication.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; }
        }
    }
    

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

使用依賴注入注冊上下文

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

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

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

    using WebApplication.Models;
    using Microsoft.EntityFrameworkCore;
    
  • 將以下 手動高亮 的代碼添加到 ConfigureServices 方法:

    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=你的數據庫地址;Database=WebApplication;User Id=你的數據庫賬號;Password=你的數據庫密碼;"; // 手動高亮
            services.AddDbContext<BloggingContext> // 手動高亮
                (options => options.UseSqlServer(connection)); // 手動高亮
        }
    

    生產應用通常會將連接字符串放在配置文件或環境變量中。 為簡單起見,本教程在代碼中定義它。

創建數據庫

以下步驟使用遷移創建數據庫。

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

  • 運行以下命令:

    Add-Migration InitialCreate
    Update-Database
    

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

    Add-Migration 命令為遷移搭建基架,以便為模型創建一組初始表。 Update-Database 命令創建數據庫並向其應用新的遷移。

創建控制器

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

  • 在“解決方案資源管理器”中,右鍵單擊“Controllers”文件夾,然后選擇“添加”>“控制器”。

  • 選擇“視圖使用 Entity Framework 的 MVC 控制器”,然后單擊“添加”。

  • 將“模型類”設置為“Blog”,將“數據上下文類”設置為“BloggingContext”。

  • 單擊 添加。

運行此應用程序

  • 調試 > 開始執行(不調試)
  • 導航到 /Blogs


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM