使用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>
<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>
<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上:
若要改用(LocalDB)或其它料庫伺服器,除了設定defaultConnectionFactory的做法之外,可以在config檔案設定連接字串,connectinString的name要和DbContext類別名稱相同,資料庫檔案預設會放在App_Data目錄(網站專案):
若connectinString的name要和DbContext類別名稱不同,則DbContext可以撰寫Constructor,呼叫父類別constructor,並傳入連接字串的name:
也可以這樣寫:
沒有留言:
張貼留言