iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 17
0
Modern Web

從Asp.Net MVC5的起跑點認識現代網站系列 第 17

Day17_Model之EntityFramework-CodeFirst實作

平常我們在建置一個專案之後,我們常面臨一個問題,我們的DB要用哪個方式串聯,VS提供了我們四個方法分成兩類,Database First和Code First。
一般我們最常選的是Database First因為可以最快的建置完整個DB的連結,並直接進入到下一步開發的動作,那Code First又是做什麼的呢?

Code First是提供了透過class的方式建置我們的Table,並依照我們設計的Table直接建置DB,超級酷,不需要去寫sql語法,用熟悉的C#,就可以建立我們的DB,今天就來試著建置一個CodeFirst。

首先建立一個新「主控台應用程式」的專案,接著再專案點選右鍵加入項目
Step1:建立ADO.Net實體資料模型
http://ithelp.ithome.com.tw/upload/images/20161230/20103808I0jkwKTdYg.png

Step2:選擇空的Code-First
http://ithelp.ithome.com.tw/upload/images/20161230/20103808DT1oSRGeyg.png

Step3:產生新的Model.cs檔案,參考也會自動加入EntityFramework
http://ithelp.ithome.com.tw/upload/images/20161230/20103808yUdz2FIsAx.png

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了!資料寫入跟讀取也都沒問題,那我麼最後我們必需來建立連結。
http://ithelp.ithome.com.tw/upload/images/20161230/20103808VbUmyS2Zbb.png

Step8: 點選工具/連結到資料庫
http://ithelp.ithome.com.tw/upload/images/20161230/20103808i3EEyCGUln.png
在App.config中,看過的connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=DemoCodeFirst.Demo1Model;,伺服器名稱如果沒有自動出現自己打也可以,點選測試連接,就會顯示連接成功。

Step9: 看左邊伺服器總管,出現我們Code出來的Db就成功了:D
http://ithelp.ithome.com.tw/upload/images/20161230/20103808ZsF7GkF22j.png


上一篇
Day16_jQuery輕量級JS libaray
下一篇
Day18_EntityFramework
系列文
從Asp.Net MVC5的起跑點認識現代網站30

尚未有邦友留言

立即登入留言