【Entity Framework】之Entity Framework Core入門

前言

本博客翻譯自微軟官方文檔 : https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=visual-studio

正文

在本教程中,您將創建一個.NET Core控制檯應用程序,該應用程序使用Entity Framework Core對SQLite數據庫執行數據訪問。

您可以通過在Windows上使用Visual Studio或在Windows,macOS或Linux上使用.NET Core CLI來遵循本教程。

在GitHub上查看本文的示例。

前提條件

安裝以下軟件:

創建一個新項目

.NET Core CLI創建項目

dotnet new console -o EFGetStarted
cd EFGetStarted

Visual Studio創建項目

  • 打開Visual Studio
  • 點擊創建一個新項目
  • 選擇帶有C#標籤的控制檯應用程序(.NET Core),然後單擊下一步
  • 輸入EFGetStarted作爲名稱,然後單擊創建

安裝Entity Framework Core

要安裝EF Core,請爲要定位的EF Core數據庫提供程序安裝軟件包。 本教程使用SQLite,因爲它可以在.NET Core支持的所有平臺上運行。 有關可用提供商的列表, 查看 數據庫提供程序。

.NET Core CLI方式

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Visual Studio方式

  • 工具> NuGet軟件包管理器>軟件包管理器控制檯
  • 運行以下命令:

    Install-Package Microsoft.EntityFrameworkCore.Sqlite
    

提示:您還可以通過右鍵單擊項目並選擇管理NuGet軟件包來安裝軟件包。

創建模型

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

.NET Core CLI方式

  • 在項目目錄中,使用以下代碼創建Model.cs

Visual Studio方式

  • 右鍵單擊項目,然後選擇添加>
  • 輸入Model.cs作爲名稱,然後單擊添加
  • 用以下代碼替換文件的內容
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

namespace EFGetStarted
{
    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=blogging.db");
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }

        public List<Post> Posts { get; } = new List<Post>();
    }

    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; }
    }
}

EF Core還可以對現有數據庫中的模型進行逆向工程。

提示:此應用程序有意使事情變得簡單明瞭。 連接字符串不應存儲在生產應用程序的代碼中。 您可能還希望將每個C#類拆分爲自己的文件。

創建數據庫

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

.NET Core CLI

運行以下命令:

dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update

這將安裝dotnet ef和在項目上運行命令所需的設計包。 遷移命令用於遷移以創建模型的初始表集。 數據庫更新命令將創建數據庫並將新的遷移應用於該數據庫。

Visual Studio方式

在Package Manager控制檯中運行以下命令

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration InitialCreate
Update-Database

這將安裝EF Core的PMC工具。 Add-Migration命令支持遷移以創建模型的初始表集。 Update-Database命令創建數據庫並將新的遷移應用於該數據庫。

創建,讀取,更新和刪除

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

using System;
using System.Linq;

namespace EFGetStarted
{
    class Program
    {
        static void Main()
        {
            using (var db = new BloggingContext())
            {
                // Create
                Console.WriteLine("Inserting a new blog");
                db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                db.SaveChanges();

                // Read
                Console.WriteLine("Querying for a blog");
                var blog = db.Blogs
                    .OrderBy(b => b.BlogId)
                    .First();

                // Update
                Console.WriteLine("Updating the blog and adding a post");
                blog.Url = "https://devblogs.microsoft.com/dotnet";
                blog.Posts.Add(
                    new Post
                    {
                        Title = "Hello World",
                        Content = "I wrote an app using EF Core!"
                    });
                db.SaveChanges();

                // Delete
                Console.WriteLine("Delete the blog");
                db.Remove(blog);
                db.SaveChanges();
            }
        }
    }
}

 

運行應用

.NET Core CLI方式

dotnet run

Visual Studio方式

 

運行.NET Core控制檯應用程序時,Visual Studio使用不一致的工作目錄。 (請參閱dotnet / project-system#3619)這會引發異常:沒有這樣的表:Blogs。 要更新工作目錄:

  • 右鍵單擊項目並選擇``編輯項目文件''
  • 在TargetFramework屬性下方,添加以下內容:
<StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory>
  • 保存文件

現在您可以運行該應用程序:

  • Debug > Start Without Debugging
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章