2011-10-28 45 views
0

我有幾個關於從模型創建數據庫的問題。模型中的實體框架數據庫

是否有可能在運行時執行此操作?我知道你可以在設計器中生成create sql,但在運行時呢?

您可以在不創建連接的情況下創建DDL嗎?只是爲了創建DDL的唯一目的而添加連接令人討厭。

是否有自動方式來處理變更?就像如果我更新實體/表,我將不得不手動改變表或有什麼處理呢?

EntityContext.CreateDatabase for sqlce正在發生什麼?當我調用它時,我必須重新創建上下文,否則我無法創建表,因爲它們已經存在。但它們並不存在,因爲任何插入的數據都沒有保存。

回答

2

絕對如此。如果你的數據庫不存在,如果你已經指定 在你的構造函數,將創建它:

 

static EntityContext() 
{ 
//for example to create a db: 
Database.SetInitializer(new CreateDatabaseIfNotExists()); 
} 
 

你怎麼通過重新創建上下文的意思嗎?如果您指定數據庫。在你的初始化中,SQL CE數據庫將被創建。 不幸的是,該模型成爲變化的最初來源。未來需要對數據庫和模型進行更改。

你的SQL CE連接字符串是這樣的:

<add name="EntityDemoSite.DataAccess.EntityContext" connectionString="Data Source=|DataDirectory|test.sdf" providerName="System.Data.SqlServerCe.4.0" /> 

注意,「名稱」應與上下文類的完整的命名空間。

+0

沒關係最後一個問題,顯然只需要處理linq2sql。 SqlCe EF顯然不支持對CreateDatabase的調用。那麼有什麼方法可以輕鬆完成數據庫/模型更新?就像說我給現有的實體添加一些屬性。對於那些沒有這些列的舊數據庫,這將如何工作? – Will

+0

我試過「Database.SetInitializer(new CreateDatabaseIfNotExists ());」但我仍然得到「數據庫文件無法找到」 – Will

+0

我想現在我只是使用SqlCeEngine創建數據庫文件。默認爲 – Will

相關問題