建立一個 ASP.NET Core Web API 專案
- 打開任何一種版本的 Visual Studio 2017
- 從功能表中點選 [檔案] > [新增] > [專案]
- 從 [新增專案] 對話窗中,點選 [已安裝] > [Visual C#] > [.NET Core] > [ASP.NET Core Web 應用程式]
- 在該對話窗下方的 [名稱] 欄位,輸入這個專案的名稱,最後點選 [確定] 按鈕
- 此時,您將會看到 [新增 ASP.NET Core Web 應用程式對話窗],請確認 [.NET Core] 選擇的版本是現在最新的 [ASP.NET Core 2.0]
- 專案類型,請選擇 [API]
- 在最左方的 [用於建立 ASP.NET Core 應用程式的專案範本,附有 RESTful HTTP 服務的控制器範例,此範本也可用於 ASP.NET Core MVC 的檢視及控制器] 文字下方,請確認選擇 [變更驗證] 的下方為 [無驗證]
- 完成之後,請點選 [確定] 按鈕
- 稍微等候一段時間,這個ASP.NET Core Web 應用程式專案就會建立完成,您可以從 Visual Studo 2017 的方案總管中,看到建立好的專案內容,如下圖所示:
安裝 NuGet 套件
- 使用滑鼠右擊 [相依性] 節點,選擇 [管理 NuGet 套件]
- 在 [管理 NuGet 套件] 視窗中,點選 [瀏覽] 標籤頁次,接著在搜尋文字輸入盒中,輸入 [Microsoft.EntityFrameworkCore]
- 當搜尋到 [Microsoft.EntityFrameworkCore] 之後,請安裝這個套件
- 在 [管理 NuGet 套件] 視窗中,點選 [瀏覽] 標籤頁次,接著在搜尋文字輸入盒中,輸入 [Microsoft.EntityFrameworkCore.SQlite]
- 當搜尋到 [Microsoft.EntityFrameworkCore.SQlite] 之後,請安裝這個套件
建立 Context 類別
- 滑鼠右擊專案節點,選擇 [加入] > [新增資料夾],接著輸入 [Models]
- 滑鼠右擊 [Models] 資料夾,選擇 [加入] > [類別]
- 在 [新增項目] 對話窗中名稱欄位,輸入 [DatabaseContext]
- 使用底下程式碼替換剛剛建立好的檔案內容,在這裡,我們剛剛建立的 DatabaseContext 類別,將會繼承 DbContext 類別,並且我們需要覆寫 OnConfiguring 方法,並且在這個方法類,指定使用 SQLite 資料庫的名稱,也就是使用這行敘述
optionsBuilder.UseSqlite("Filename=MyDatabase.db")
。
using Microsoft.EntityFrameworkCore;
namespace XamarinCore.Models
{
public class DatabaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=MyDatabase.db");
}
}
}
修正 Startup 類別
- 請在 Visual Studio 2017 方案總管中,打開 [Startup.cs] 檔案
- 找到 [ConfigureServices] 方法,依照底下程式碼進行修正
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
}
- 接下來,我們需要建立 Startup 的建構式,依照底下程式碼進行修正。在這裡,我們將會使用建構式注入 (Constructor Dependency Injection) 方法,注入 IHostingEnvironment 這個介面實作物件,並且在這裡設定要產生 SQLite 的資料庫檔案。
public Startup(IHostingEnvironment env)
{
using(var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
}
建立資料模型與修正 DatabaseContext 類別
- 滑鼠右擊 [Models] 資料夾,選擇 [加入] > [類別]
- 在 [新增項目] 對話窗中名稱欄位,輸入 [Todo]
- 使用底下程式碼來宣告 Todo 這個類別
public class Todo
{
public int Id { get; set; }
public string Title { get; set; }
public bool HasCompleted { get; set; }
}
- 打開 [DatabaseContext.cs] 檔案,在 DatabaseContext 類別中,參考底下程式碼,加入 Todos 這個屬性的宣告
using Microsoft.EntityFrameworkCore;
namespace XamarinCore.Models
{
public class DatabaseContext : DbContext
{
public virtual DbSet<Todo> Todos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=MyDatabase.db");
}
}
}
使用移轉來建立資料庫
- 滑鼠右擊專案節點,選擇 [編輯 XamarinCore.csproj]
- 找到
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
宣告,在這行後面,加入<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
,完成後的結果如下所示,最後,請按下儲存功能。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>
</Project>
- 請 [建置] 這個專案
- 滑鼠右擊專案節點,選擇 [在檔案總管中開啟資料夾]
- 當檔案總管開啟之後,請在位置列中輸入 [cmd],通知作業系統開啟命令提示字元視窗
- 請在命令提示字元視窗中,輸入
dotnet ef migrations add InitialCreate
,並且按下 [Enter]。當您看到這段文字 Done. To undo this action, use 'ef migrations remove' 出現,那就表示這段命令已經成功執行。
D:\Vulcan\Projects\XamarinCore\XamarinCore>dotnet ef migrations add InitialCreate
Done. To undo this action, use 'ef migrations remove'
- 請在命令提示字元視窗中,輸入
dotnet ef database update
,並且按下 [Enter]。當您看到這段文字 Applying migration '20180308090145_InitialCreate'. Done. 出現,那就表示這段命令已經成功執行。 - 底下畫面截圖,就是剛剛在命令提示字元視窗中,所下達的兩個命令。
若想知道更多這方面的資訊,可以參考 在 .NET Core 主控台應用程式上使用 EF Core 搭配新資料庫的使用者入門
- 現在,我們可以查看 Visual Studio 2017 的方案總管,您將會看到在這個專案節點內,多了一個 [Migrations] 資料夾,並且在該資料夾內也有兩個檔案存在;另外,我們也看到了 [MyDatabase.db] 這個 SQLite Database 資料庫檔案也產生出來了。
結論
好的,現在我們可以透過 Entity Framework Core 所提供的各項功能與機制,開始進行 SQLite 資料庫的資料表存取動作了。
其他相關文章
更多關於 Xamarin / Xamarin.Forms 教學、技術分享、用法文章,請參考 I ♥ Xamarin
本篇文章的專案範例原始碼,可以從 https://github.com/vulcanlee/CSharpNotes2018/tree/master/XamarinCore 取得