2012-02-13 47 views
0

我有興趣知道是否有任何合理的方法來創建自己的DB,CREATE MyDatabase,CREATE Table1實體內DbContext,mabye InitializeDatabase方法? 我知道使用POCO的EF 4.1會爲我做,但現在看來,如果我想在DB初始化期間生成一些事件(請參閱編輯),我可能想在我的代碼中生成DB。如果我想向最終用戶報告數據庫創建進度,我需要在我的代碼中創建數據庫ant表,爲此,我需要弄清楚如何在我的內部創建數據庫(不是表格)碼。實體框架,POCO,通過代碼創建您自己的數據庫?

我已經試過:

public void InitializeDatabase(MyContext context) 
{ 

    context.Database.ExecuteSqlCommand("Query to create table"); 
} 

但問題是,我需要爲創建表首先創建數據庫,但如何做到這一點?或者有更好的方法去做我想做的事情?

編輯:

是的,我知道POCO將自動爲我做的,但不幸的是,似乎我確實需要/想我與POCO的代碼創建數據庫和表,其原因是,我想顯示數據庫創建/初始化短語期間的進度?我可以出來的唯一方法是創建數據庫並通過我自己的代碼創建表,並在每個表創建後生成事件。

回答

0

實體框架將嘗試創建您在連接字符串中配置的數據庫。只要確保連接到服務器的用戶有權創建數據庫。

0

你在做什麼看起來像Entity Framework Code First。

如果需要,您可以在Model Builder Seed方法中創建數據庫和/表。

如果您唯一的目標是向用戶報告進度,則不需要使用您自己的查詢來創建數據庫。您可以使用ModelBuilderOnModelCreating來完成此操作。

0

是的,我知道POCO將自動爲我做的,但不幸的是,似乎我確實需要通過自己創建的數據庫和表甚至POCO

都能跟得上!至少,如果您使用的是Entity Framework 4 (與.Net 4.0一起提供的版本,需要Visual Studio 2010. VS 2008不能使用.Net 4.0)

它叫做Code-First開發。基本上,你編寫你的數據類,Entity Framework根據類關係,屬性名和一些可選的EF特定屬性自動推斷數據庫結構。然後,它會自動爲您創建數據庫(儘管支持自動遷移是最小的... for now

Code First有一些簡單的教程herehere

+0

謝謝你的鏈接。我有POCO工作正常,並且默認情況下它確實爲我生成了DB結構。現在我的問題是,如果我想生成DB和表我自己,因爲我需要生成每個表後生成的事件,我該怎麼做? – 2012-02-14 01:01:53