2012-08-27 80 views
8

我正在閱讀Manning的「ASP.NET MVC 4 in Action」一書,並試圖獲得第一個例子的工作。asp.net mvc鍵'attachdbfilename'的值無效

在我的測試應用程序中,我構建了一個簡單的模型並創建了一些視圖。然後我使用NuGet導入了「SQL Server Compact」。

當我終於嘗試運行我得到以下錯誤的應用程序:出現這種情況與數據庫的每一次互動

Invalid value for key 'attachdbfilename' 

(SELECT或其他CRUD操作),我運行。有任何想法嗎?

回答

11

雖然,我有點晚來回應這個問題,但我面臨着同樣的問題,我通過修改連接字符串像解決它下面

<add name="MovieDBContext" 
    connectionString="Data Source=.;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
    providerName="System.Data.SqlClient" /> 

希望這對其他人也有幫助。

0

這是我發現的有關該錯誤的博文。它有點舊,但使用了sql server的快速版本。 MSDN Link

這對期待SQL數據庫的服務器名稱的博客帖子會談是本地地址,而不是/ SQLEXPRESS

還有這個blog post談到有關具有不正確的連接字符串。所以也許檢查你的連接字符串到數據庫。你的問題可能在那裏。

1

轉到Web.config文件的部分和修改部分下面讓SQLServerCE4使用:

<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
<parameters> 
<parameter value="System.Data.SqlServerCe.4.0"/> 
</parameters> 
</defaultConnectionFactory> 
</entityFramework> 
3

我試圖尋找了沒有成功此特定錯誤的解決方案。

最後修復.Net Framework 4到4.0.2。補丁和細節可以發現Here is the link

希望它可以幫助

0

您正在使用SQL Server Compact 4.0:

確保您安裝了SQL Server Compact 4.0。

安裝VS 2010 SP1 Tools for SQL Server Compact

更改連接字符串:

<connectionStrings> 
    <add name="MyModelDBContext" connectionString="Data Source=|DataDirectory|mymodel.sdf" providerName="System.Data.SqlServerCe.4.0"/> 
    </connectionStrings> 

右鍵單擊控制器文件夾 - >添加 - >控制器

類型:

YourController 
MVC-Controller with read/write ... 
MyModel 
new datacontext -> APP.Models.DatabaseContext 
1

我想使用SQL時,僅出現問題Express .NET Framework v4.0.30319反正 在.NET Framework更新4.0中添加了SqlClient中的SQL Server Express本地數據庫運行時支持。2讀 - http://support.microsoft.com/kb/2544514

或者使用類似

<add name="EmployeeDbContext" connectionString="Data Source=.;Initial Catalog=Employees;AttachDBFileName=|DataDirectory|\Employees.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
2

連接字符串,我覺得這裏的問題是串在web.config中是不正確的 根據您的設置SQL,該字符串,如果你的工作像這樣設置類似的東西

<add name="MovieDBContext" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" 
    /> 

Data Source =。\ SQLEXPRESS; - >有時候,它會是數據源=。 之後,你需要配置權限來訪問FOlder App_Data 如果你在Window 7上測試,右鍵單擊文件夾。財產 安全選項卡 - >添加用戶網絡服務充分的權利

+1

它爲我改變爲'數據源=本地主機\ SQLEXPRESS;',並與App_Data文件夾的屬性的安全選項卡下的完全控制添加'網絡SERVICE'用戶。謝謝! – user1477388

0

面對同樣的問題,我看了我的連接字符串,發現「UNC風格」路徑例如\\MyServer\MyDBServer允許的,人們必須使用MyServer\MyDBServer語法遠程主機.\MyDBServer語法本地託管的數據庫服務器。

1
<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 

上述連接字符串是錯誤得到解決了我的數據庫的名稱之前給了一個錯誤,但因爲只要添加「\」。

試試這個:

<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />