MVC使用CodeFirst技術實現基礎連結資料庫 Create Model

 

1.新增名為MyGuestBook專案並選擇MVC核心

 

2.於Models資料夾新增ADO.NET實體資料模型並使用「空的CodeFirst模型」

 

3.新增後會在Models資料夾內自動產生「GuestBookModels.cs」檔

 

4.在「GuestBookModels.cs」檔新增POCO(Plain Old CLR Object)類別

public class GuestBookEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Message { get; set; }
}

 

5.在「GuestBookModels.cs」檔新增DataContext(Code First中的上下文物件)

在GuestBookModels加入GuestBookeEntity「資料表」

public virtual DbSet<GuestBookEntity> MyEntities { get; set; }

於「GuestBookModels.cs」檔新增Model初始化

Database.SetInitializer(new CreateDatabaseIfNotExists<GuestBookModels>());

 

6.於Controller的Index動作new GuestBookModel並將該Model裡的GuestBookEntiy類別的結果傳給View

 

7.於View則要接收從Controller傳來的GuestBookEntiy型別

在檔案開頭要宣告@model IEnumerable<MyGuestBook2.Models.GuestBookEntity>

此時model為集合,可用來顯示Table欄位@Html.DisplayNameFor(model => model.Id)

 

8.結果如下,可以連結資料庫顯示欄位名稱

 

---------------------------------------------------------------------------------------------------------------

補充1:Code first與Database first的DbContext的差別

補充2:在一個繼承DbContext的類別中如下

    public class GuestBookModels : DbContext
    {
        // 您的內容已設定為使用應用程式組態檔 (App.config 或 Web.config)
        // 中的 'GuestBookModels' 連接字串。根據預設,這個連接字串的目標是
        // 您的 LocalDb 執行個體上的 'MyGuestBook2.Models.GuestBookModels' 資料庫。
        // 
        // 如果您的目標是其他資料庫和 (或) 提供者,請修改
        // 應用程式組態檔中的 'GuestBookModels' 連接字串。
        public GuestBookModels()
            : base("name=GuestBookModelsConnection")
        {
            Database.SetInitializer(new CreateDatabaseIfNotExists());
        }

        // 針對您要包含在模型中的每種實體類型新增 DbSet。如需有關設定和使用
        // Code First 模型的詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkId=390109。

        public virtual DbSet MyEntities { get; set; }
    }

有一條字串為base("name=GuestBookModelsConnection"),該用途為指定ConnectionName將會對應到

MVC專案第一層的web.config裡的ConnectionName部分內容如下

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnet-MyGuestBook2-20140721052420.mdf;Initial Catalog=aspnet-MyGuestBook2-20140721052420;Integrated Security=True;User Instance=True"
      providerName="System.Data.SqlClient" />
    <add name="GuestBookModelsConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyGuestBook2.Models.GuestBookModels;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"
      providerName="System.Data.SqlClient" />
  </connectionStrings>