2012-06-01 39 views
0

我有一個乾淨的MVC 3項目和使用SqlCe會員提供安全帳戶。如何使asp.net成員提供商和實體框架共享相同的數據庫

當我連接字符串的成員提供和Entity Framework使用相同的「數據庫」中指定我會得到在EF的Code First模型的表未找到錯誤

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0" /> 
    <add name="SqlDbContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0" /> 
    </connectionStrings> 

但是如果我指定不同的數據庫名稱,然後我會完美工作 - 雖然它創建兩個獨立的SDF文件。以下連接字符串的工作原理:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCE.4.0" /> 
    <add name="SqlDbContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0" /> 
    </connectionStrings> 

爲什麼它只在我指定兩個獨立的SDF表時才起作用?我怎樣才能爲會員供應商和ef模型使用單一的SDF數據庫?

+0

你的EF手動創建數據庫表? –

+0

不,我正在使用代碼第一種方法,以期望自動創建表 - 實際上這些表是使用第二個配置自動創建的 – Fixer

回答

1

您的問題的原因是代碼第一個內部邏輯的表創建。除EF 5.0 RC以外的所有版本都將只與數據庫一起創建表。如果數據庫存在,並且您沒有使用能夠刪除數據庫的初始化策略,則不會創建表。反過來,如果您使用該策略來刪除數據庫,您將失去您的會員表。

您可以創建custom database initializer建立在現有的數據庫或自定義數據庫初始化將執行DDL腳本對種子的方法創建成員表或者你可以嘗試EF 5.0 RC這應該是能夠在現有的數據庫亂的創建表的表框。

或者,您也可以先讓代碼先創建數據庫,然後手動添加成員資格表,但每次讓代碼首先重新創建數據庫(不使用遷移時),它將刪除您的成員資格表,您將不得不手動添加它們再次。

相關問題