EntityFramewok Core 1.1連接MSSql數據庫詳解


  最近在研究ASP.NET Core,其中就用到了Entity Framework Core,對於Entity Framework Core連接SqlServer數據庫,使用Code Frist創建數據庫,更新數據庫做一個記錄。

      開發工具:VS2017 RC

  Net Core版本:1.1

      EF版本:1.1

一 創建項目

  打開VS2017 RC,新建項目,選擇ASP.NET Core Web應用程序,填寫項目名稱,解決方案名稱,選擇保存位置,下一步

 

  

  然后選擇ASP.NET Core 1.1,Web應用程序,身份驗證選擇不進行身份驗證,點擊確定

  

  然后右擊解決方案,選擇添加一個.NET Core類庫,我們命名為EntityFramework

  

二  在FY.EntityFramework中添加相關依賴項

  在FY.EntityFramework中添加依賴項添加 Microsoft.EntityFrameworkCore.SqlServer 和  Microsoft.EntityFrameworkCore.Tools

  右擊FY.EntityFramework,選擇管理NuGet程序包,在打開的頁面中瀏覽中搜索以上兩個依賴項,並安裝

  

  

  如果你用的是VS2015的話,還可以通過另外一種方式添加依賴項,即直接再project.json文件中添加依賴項,但是我使用的VS2017構建的項目,項目中沒有這個文件了,而是回歸了以前的.csproj文件,現在我也沒有查到在這個文件怎么添加以來項,是直接添加?還是什么?希望有知道的朋友告知一聲!

  如果你使用的PostgreSQL,在這個地方,你要添加的依賴項是

   

  • Npgsql.EntityFrameworkCore.PostgreSQL

      PostgreSQL數據提供的支持EF Core的基礎類庫,是通過EF Core使用PostgreSQL數據庫的根本。

  • Npgsql.EntityFrameworkCore.PostgreSQL.Design

      使用Guid(對應Postgre數據的類型為uuid)類型的主鍵必須,int/long類型的主鍵不添加也沒問題。

  • Microsoft.EntityFrameworkCore.Tools

      EF Core工具,CodeFirst數據庫遷移相關操作必須。

三 編寫配置文件

  在FY.EntityFramework中添加一個簡單的User實體類,我們簡單的模擬一下數據

  

1 namespace FY.EntityFramework
2 {
3     public class User
4     {
5         public int Id { get; set; }
6         public string UserName { get; set; }
7         public string Password { get; set; }
8     }
9 }

  然后定義一個上下文操作類,命名為"APPDbContext",繼承自DbContext

 

 1 using System.Collections.Generic;
 2 using System.IO;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace FY.EntityFramework
 7 {
 8     public class APPDbContext:DbContext
 9     {
10         public APPDbContext(DbContextOptions<APPDbContext> options):base(options)
11         {
12 
13         }
14         public DbSet<User> User { get; set; }
15 
16         protected override void OnModelCreating(ModelBuilder modelBuilder)
17         {
18             base.OnModelCreating(modelBuilder);
19         }
20     }
21 }

 

  在FY.Web中的appsettings.json中添加數據庫連接字符串

 1 {
 2   "ConnectionStrings": {
 3     "SqlServerConnection": "Server=.;Database=dbCore;User ID=sa;Password=sa123sa;"
 4   },
 5   "Logging": {
 6     "IncludeScopes": false,
 7     "LogLevel": {
 8       "Default": "Warning"
 9     }
10   }
11 }

  在startup.cs中的ConfigureServices方法中,獲取數據庫連接字符串,並添加數據庫連接服務

  

1         public void ConfigureServices(IServiceCollection services)
2         {
3             var sqlConnection = Configuration.GetConnectionString("SqlServerConnection");
4             services.AddDbContext<APPDbContext>(option => option.UseSqlServer(sqlConnection));
5             services.AddMvc();
6         }

 

注意:這個地方一定要添加

 1 using Microsoft.EntityFrameworkCore; 

否則option => option.UseSqlServer(sqlConnection)這個地方報錯,當時我在這個地方折騰了好久。

四 添加數據庫遷移文件並創建數據庫

  點擊工具->NuGet包管理器->程序包管理器控制台

  注意:如果你的Powershell版本為2.0的話,需要將其升級到3.0或者4.0

  將默認項目選擇為FY.EntityFramework

  在程序包管理器控制台中輸入Add-Migration Migrations

  

  待執行完畢后,在FY.EntityFramework項目下會添加Migrations的文件夾,下面包含三個文件

  

  然后執行Update-Database,待執行完成后,查看數據庫,發現數據庫及表以及創建完成。

 

  除了使用程序控制台這種方式添加數據庫外,還有一種方式,即使用dotnet命令,但是這種方式我沒有執行成功,原因是使用EF Core1.1的時候,當使用dotnet ef 命令的命令的時候,需要

添加Microsoft.EntityFrameworkCore.Tools.DotNet,但是會提示the package type “DotnetCLITool” is not supported,原因是.NET Core CLI命令(dotnet ef)目前不能在.NET Core Tools MSBuild Alpha中使用。

 五 總結

  至此我們使用EF Core 1.1 創建好了數據庫,其實PostgreSQL數據庫也是這樣創建,不同的是連接字符串和添加的依賴項。

  吐槽自己一句,我發現自己真的不適合寫文章,惰性太大,但是記性又不好,所以強迫自己寫一下這類的文章,避免自己再忘記,也可以記錄一下自己踩的坑。好了,就到這吧,下個文章再見!!!

 

 

 

 

 

 

 

 

 

 

 

 

  

 


免責聲明!

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



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