使用EF Core+CodeFirst建立ASP.NET Core MVC項目


本篇隨筆介紹如何使用.NET Core+EF Core創建Web應用程序

首先借用官網的話簡單介紹一下ASP.NET Core

ASP.NET Core 是一個跨平台的高性能開源框架,用於生成基於雲且連接 Internet 的新式應用程序。 使用 ASP.NET Core可以:

  • 創建 Web 應用程序和服務、IoT 應用和移動后端。
  • 在 Windows、macOS 和 Linux 上使用喜愛的開發工具。
  • 部署到雲或本地。
  • 在 .NET Core 或 .NET Framework上運行。
我的開發工具:Visual Studio2017、SqlServer2012
我的開發環境:.NET Core2.2

接下來介紹使用Visual Studio2017創建Web項目,步驟如下:

1、選擇.NET Core→ASP.NET Core Web應用程序,點擊確定

2、選擇.NET Core、ASP.NET Core2.2,選擇Web應用程序(模型視圖控制器)即MVC,暫時不進行身份驗證,點擊確定

得到如下解決方案:

3、使用工具→NuGet包管理→程序包管理控制台添加EF依賴

在NuGet官網找到Microsoft.EntityFrameworkCore包           

網址:https://www.nuget.org/packages/Microsoft.EntityFrameworkCore

 

然后在程序包管理控制台中輸入  Install-Package Microsoft.EntityFrameworkCore -Version 2.2.4 點擊回車

 

在依賴項NuGet中出現Microsoft.EntityFrameworkCore(2.2.4)包說明添加EF依賴成功。

 

也可直接在項目工程文件(*.csproj)中添加如下代碼達到添加EF依賴的目的

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
</ItemGroup>

 4、創建數據庫上下文和模型類

在解決方案下新建.NET Core類庫DAL(同樣記得添加EF依賴),在DAL中新建數據庫上下文(MyDataContext)和模型類(UserInfo),代碼如下:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DAL
{
    public class UserInfo
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Required(ErrorMessage = "不能為空")]
        [Display(Name = "用戶ID")]
        public int UId { get; set; }

        [Required(ErrorMessage = "不能為空")]
        [Display(Name = "用戶名")]
        public string UName { get; set; }

        [Required(ErrorMessage = "不能為空")]
        [StringLength(50, ErrorMessage = "長度不能超過50")]
        [Display(Name = "密碼")]
        public string UPws { get; set; }

        [Required(ErrorMessage = "不能為空")]
        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9]+\.[A-Za-z]{2,4}", ErrorMessage = "郵箱格式錯誤")]
        [Display(Name = "郵箱")]
        public string UEmail { get; set; }

        [Required(ErrorMessage = "不能為空")]
        [StringLength(11, ErrorMessage = "長度不能超過11")]
        [Display(Name = "聯系方式")]
        public string UTel { get; set; }
    }
}
using Microsoft.EntityFrameworkCore;

namespace DAL
{
    public class MyDataContext : DbContext
    {
        public MyDataContext(DbContextOptions<MyDataContext> options) : base(options) { }

        public DbSet<UserInfo> UserInfo { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
}

備注:數據庫上下文是為數據模型協調 Entity Framework 功能的主類 。 此類由 Microsoft.EntityFrameworkCore.DbContext 類派生而來。

5、在Startup.cs中注冊數據庫上下文

在 ASP.NET Core 中,服務(如數據庫上下文)必須向依賴關系注入(DI)容器進行注冊。 該容器向控制器提供服務。

在Startup.cs的ConfigureServices()方法中添加如下代碼:

var connection = "Data Source=.;Initial Catalog=TestDb;User Id=sa;Password=svse;";
services.AddDbContext<MyDataContext>(options =>
    options.UseSqlServer(connection, b => b.MigrationsAssembly("TestCore")));

1、在項目運行時,會首先執行ConfigureServices()方法。

2、連接數據庫的字符串connection可配置在appsettings.json文件中,在此暫不做介紹。

3、"TestCore"為配置此上下文維護遷移的程序集

 6、使用程序包管理器控制台命令生成數據庫

打開程序包管理器控制台選擇默認項目后 輸入數據遷移命令:Add-Migration elen  (elen隨意輸入)

PM> Add-Migration elen

 

遷移成功,生成文件Migrations(可刪除)

 

繼續輸入創建數據庫命令Update-Database向其應用新的遷移

PM> Update-Database

  

創建數據庫成功,此時SqlServer2012中已存在數據庫TestDb

1、生成數據庫時會生成遷移歷史表__EFMigrationsHistory,請勿刪除。

2、在需要修改數據庫字段時,切記不要直接在數據庫修改,可在模型類中修改后運行Update-Database命令進行修改。

至此,使用EF Core+CodeFirst建立ASP.NET Core MVC項目介紹完畢,在學習和使用過程中我遇到了很多坑,本文是我在操作相對熟練以及熟悉其基本原理后所寫,適合初學者參考,如有不足之處歡迎大家留言評論!


免責聲明!

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



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