2021年9月13日 星期一

Code First migration

之前一直是使用Database first,沒有使用過 code first.所以今天就來試試

依下列步驟

  • 建立新 MigrationsDemo 主控台應用程式
  • 將最新版本 EntityFramework NuGet 套件新增至專案
    • [工具] –> [程式庫套件管理員] –> [套件管理員主控台]
    • 執行 Install-package EntityFramework 命令
  • 使用如下所示的程式碼新增 Model.cs 檔案。 此程式碼會定義構成我們網域模型的單一 Blog 類別,以及作為 EF Code First 內容的 BlogContext 類別

Model.cs 內容

public BlogContext() : base("name=BlogContext") { }  這句等下要對應app.config


在App.config 中加入這段

 <connectionStrings>
    <add name="BlogContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Blogs;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>


BlogContext 就是剛剛Model  BlogContext的連線字串
Blogs 就是要建立的資料庫名稱  


接下來是Program.cs的撰寫
class Program
    {
        static void Main(string[] args)
        {
            using (var db = new BlogContext())
            {
                db.Blogs.Add(new Blog { Name = "Andy" });
                db.SaveChanges();

                foreach (var item in db.Blogs)
                {
                    Console.WriteLine("blog name:"+item.Name);
                }
            }
            Console.WriteLine("請按任意鍵退出....");
            Console.ReadKey();
        }
    }

執行主控台程式

資料庫就會建立了


在套件管理員主控台中執行 Enable-migrations 命令


Migrations 的資料夾就會出現.然後會再出現兩個檔案 
202109140213137_InitialCreate.cs 是前面是流水號每個人不一樣
內容如下


再來如果想要再對Table 執行動作的話:
在套件管理員主控台中執行 Add-migrations  addColumn 命令
addColumn 的名稱,可以自行輸入自己想要的名稱


會多出一個 202109140221255_addColumn.cs

在檔案內容選擇下修改的項目


在套件管理員主控台中執行 Update-Database 命令
再來看一下資料庫

成功新增了一個Time的欄位


參考

















沒有留言:

張貼留言

MS-SQL查詢指定資料表的結構

如果今天要修改一個欄位的長度,再來查查看是否有修改成功  1. MS Sql 修改欄位語法 ALTER TABLE MyTable ALTER Column Column_1 nvarchar(10) NOT NULL 2. 方法1 -- 查詢指定資料表的結...