平常我們在建置一個專案之後,我們常面臨一個問題,我們的DB要用哪個方式串聯,VS提供了我們四個方法分成兩類,Database First和Code First。
一般我們最常選的是Database First因為可以最快的建置完整個DB的連結,並直接進入到下一步開發的動作,那Code First又是做什麼的呢?
Code First是提供了透過class的方式建置我們的Table,並依照我們設計的Table直接建置DB,超級酷,不需要去寫sql語法,用熟悉的C#,就可以建立我們的DB,今天就來試著建置一個CodeFirst。
首先建立一個新「主控台應用程式」的專案,接著再專案點選右鍵加入項目
Step1:建立ADO.Net實體資料模型
Step2:選擇空的Code-First
Step3:產生新的Model.cs檔案,參考也會自動加入EntityFramework
Step4:查看App.config
<connectionStrings>
<add name="Demo1Model"
connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=DemoCodeFirst.Demo1Model;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
會發現預設已經自動幫你建立了資料庫的連結字串
Step5:建立一個Product.cs作為Table使用
class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public int Stock { get; set; }
public int Price { get; set; }
}
小技巧prop+TabTab
自動產生一列資料
設計好Table內容後,接著再Program.cs中加入新增Table的Dbset<>
Step6:加入Dbset<>
public Demo1Model()
: base("name=Demo1Model")
{
}
public virtual DbSet<Product> Product { get; set; }
要設定Dbset<>型別才能支援資料的存取,再main找Product時候才找的到資料!
Step7:在Program.cs中,測試DB並將DB建立起來,我們先新增資料到Product Table,並且撈資料出來,看是否成功。
static void Main(string[] args)
{
using (Demo1Model model = new Demo1Model())
{
Product product = new Product
{
ProductId = 1,
Name = "Sensor001",
Price = 9999,
Stock = 100000
};
//新增資料至Product
model.Product.Add(product);
//必須SaveChanges才會儲存資料,並測試有沒有存入成功將結果丟給result
int result = model.SaveChanges();
//撈第一筆資料看有沒有存入成功(之後介紹First()之類的LINQ用法)
var data = model.Product.First();
Console.WriteLine(result + "Name:" + data.Name);
Console.ReadKey();
}
}
從結果來看,我們能確定VS已經幫我們建立好DB了!資料寫入跟讀取也都沒問題,那我麼最後我們必需來建立連結。
Step8: 點選工具/連結到資料庫
在App.config中,看過的connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=DemoCodeFirst.Demo1Model;
,伺服器名稱如果沒有自動出現自己打也可以,點選測試連接,就會顯示連接成功。
Step9: 看左邊伺服器總管,出現我們Code出來的Db就成功了:D