2013年5月22日 星期三

Entity Framework Code First DB命名

使用Entity Framework 5  Code First 技術建立DB時,預設會根據DbContext類別名稱來命名資料庫預設會使用完全識別名稱來命名資料庫 : "Namespace.Class”,根據網站組態檔的定義,建立在SQL Server Express or LocalDB上,

例如以下組態設定,會建立在SQL Express

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

以下組態設定,會建立在LocalDB

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

例如有一個MyDBContext類別定義如下:

public class MyDBContext : DbContext { 
    public DbSet<Employee> Employees { get; set; }
  }

以下範例只有定義MyDBContext類別,資料庫名稱為 : Ch11_CodeFirst.Models.MyDBContext,DB建立在SQL Server Express上:

image

若要改用(LocalDB)或其它料庫伺服器,除了設定defaultConnectionFactory的做法之外,可以在config檔案設定連接字串,connectinString的name要和DbContext類別名稱相同,資料庫檔案預設會放在App_Data目錄(網站專案):

image

若connectinString的name要和DbContext類別名稱不同,則DbContext可以撰寫Constructor,呼叫父類別constructor,並傳入連接字串的name:

image

也可以這樣寫:

image

沒有留言:

總網頁瀏覽量