2011-11-28 53 views
2

我試圖在MySQL數據庫中使用代碼優先的方法。使用實體框架4.1 Code-First在現有的MySQL數據庫上

在這裏踢球,是我不能刪除和創建DB(在我的託管公司),所以我不能自動創建數據庫中的表。我看過http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnlyEntity Framework CTP 4 - Code First Custom Database Initializer,但我似乎無法讓我的MySQL工作。

編輯:基本上我正在尋找一種類似上述的解決方案 - 通過僅使用MySQL刪除和創建表,而不是數據庫本身。

有沒有人有過這種方法的運氣?

謝謝

回答

0

我先在現有數據庫中使用代碼。你所需要做的就是在web.config中設置你的連接字符串,如下所示。

注意: - 你可能會因爲你使用MySQL而有所不同。

<connectionStrings> 
<add name="PriceCompareEntity" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\PriceCompare.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

然後只要確保您的模型類匹配數據庫中的表。數據庫中不掉線,創造飛,除非它告訴過,像在以下情況下,我是問EF在Global.asax中

System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData()); 

創建數據庫的更多信息,你可以訪問EF Code first with Existing DB

+0

對不起,我有點模糊。我沒有問題連接到數據庫。我正在尋找的是一種只生成表格的方法,而不是數據庫 - 就像我在我的問題中鏈接的解決方案一樣,但使用MySQL – Dynde

+0

我不確定這是可以做到的。整個數據庫是使用Code-first生成的。我認爲沒有辦法使用代碼優先將表添加到現有數據庫。 –

+0

那麼,我提供的鏈接似乎適用於SQL服務器 - 顯然這是可能的。我需要的只是它與MySQL一起工作。 – Dynde

1

這不是你直接要求的,但它可能會給你類似的結果。

您可以嘗試使用代碼優先的方法從頭開始創建數據庫,然後在新鮮數據庫和生產數據庫之間進行區分以創建遷移腳本。這些遷移腳本可以在生產中執行而不會丟失表格。

我知道這最終是一種低技術的方法,但它可以適用於您的情況。遷移腳本方法正是許多真實公司將DB遷移/促銷活動應用到更受限制的環境中的方式。

如果您對將要對數據庫進行更改的類型有一個很好的想法,那麼您可以尋找不是EF特定的遷移腳本的代碼優先解決方案。像Sharp Migrationsmany similar tools之一。

+0

感謝您的意見,儘管我認爲,如果我採用低科技方法,我會設置一個本地mysql,具有刪除和創建數據庫的權限,然後將數據庫簡單地導出到託管mysql: – Dynde

+0

@Dynde:同樣的差異,雖然有些環境對這樣的東西更友善,但其他人更傾向於將DB腳本交給DBA。取決於你的公司。你讀過關於C#遷移腳本的最後一點了嗎?許多人喜歡他們,這是少一些「低科技」。 –

+0

你是對的。由於這是一個小型的私人項目,我可能會以低科技方法結束。EF自動創建表格(無需刪除數據庫)的便利性會更輕鬆 - 尤其是因爲它似乎適用於SQL Server。我會研究遷移工具 - 謝謝,標記爲答案,因爲它最接近(實際上沒有EF自動生成) – Dynde