2013-08-16 140 views
2

我有一個簡單的控制檯應用程序設置,我試圖讓代碼優先的實體正常工作。我已經完成了基本的例子,並設置了我的類和上下文。一旦我運行我的應用程序,數據庫會自動生成並放入我的bin/Debug目錄中。這很好,至少有一些工作。但是現在我想將SQL Server Compact 4.0數據庫文件(.sdf)添加到項目中,並使用該文件代替自動生成的數據庫。從我讀過的內容中,我只需要添加一個名稱與派生的DbContext類匹配的連接字符串。SQL Server Compact 4.0代碼優先連接字符串指定

下面是我的app.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="StudentContext" 
     connectionString="Data Source=Database1.sdf" 
     providerName="System.Data.SqlServerCe.4.0"/> 
    </connectionStrings> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
</configuration> 

這是當它試圖使用初始化上下文,我收到錯誤。

Visual Studio Error

內部異常說

配置系統初始化失敗

我試過直接雖然構造函數指定的情況下,仍然沒有運氣。希望我只是忽略了一些東西。

(側面說明,我抓住的EntityFramework從的NuGet,它應該是5.0,但了AppConfig說,4.4?的自動生成的偉大工程,所以我想他們沒有有什麼彼此。)

+0

在.NET 4.0上的EF 5.0將被稱爲'4.4' - 這裏沒有錯誤(只是令人困惑的編號方案....)在.NET 4.5項目中,EF 5.0將爲「5.0」。 –

回答

2

問題是我的連接字符串是指向一個不存在的位置。因此,每次運行該程序時,都會自動在bin/debug中創建一個文件。

因此,要麼指定一個直接文件路徑到sdf文件或使用| DataDirectory |

connectionString="Data Source=|DataDirectory|Database1.sdf" 

然後在您的目錄設置爲什麼高峯。如果它不是你應用程序中的目錄,那麼你將需要手動改變它。但是網站有一個它應該指向的App_Data目錄。

var s = AppDomain.CurrentDomain.GetData("DataDirectory"); 
相關問題