2013-03-16 73 views
17

我想在我的MVC 4應用程序在VS2012中添加控制器這一形象:添加控制器錯誤無法檢索元數據

add controller

型號:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 

namespace MvcDemo.Models 
{ 
    public class MovieDB 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Director { get; set; } 
     public DateTime Date { get; set; } 
    } 
    public class MovieDBContext : DbContext 
    { 
     public DbSet<MovieDB> Movies { get; set; } 
    } 
} 

連接字符串:

<connectionStrings> 

<add name="DefaultConnection" 
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcDemo-20130315191956;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcDemo-20130315191956.mdf" 
providerName="System.Data.SqlClient" /> 

<add name="MovieDBContext" 
connectionString="Data Source=|DataDirectory|\Movies.sdf" 
providerName="System.Data.SqlServerCe.4.0"/> 

</connectionStrings> 

點擊「添加」後,發生此錯誤:

unable to retrieve metadata for 'MvcDDemo.Models.MovieDB'.Using the 
same DbCompiledModel to create contexts against different type of 
database servers is not supported.instead,create a 
separate DbCompiledModel for each type of server being used. 

有什麼建議嗎?

+1

明顯的部分是你的情況下失敗。不明顯的部分是**爲什麼**。這通常是以降序排列,1)web.config中的連接字符串,2)你的db 3),因爲你似乎在使用Code First,你的初始化方法或遷移策略可能是問題。請解釋你已經做了什麼來初始化數據庫,什麼樣的數據庫,什麼有關... – 2013-03-16 05:10:48

+0

好吧,分享你的連接字符串 – 2013-03-16 06:19:44

+1

這絕對是連接到數據庫的問題,但我沒有看到它。你使用的是緊湊型,你的連接看起來很穩固。你正在使用正確的上下文... – 2013-03-16 07:03:09

回答

18

Web.config中,設置第二個providerName與第一個providerName相同,並且在創建控制器之後,撤銷那個!

來自:here

+0

在我的情況下,我需要更改connectionString =「metadata ***」。 – 2015-07-11 09:18:40

5

變化 providerName="System.Data.SqlServerCe.4.0providerName="System.Data.SqlClient來修復這個錯誤。

-1

web.config中,刪除AttachDBFilename=|DataDirectory|****.mdf一行。

0

用戶爲如下providerName = "System.Data.SqlServerCe.4.0"

<add name="MovieDBContext" 
connectionString="Data Source=|DataDirectory|\Movies.sdf" 
providerName="System.Data.SqlServerCe.4.0" /> 
4

我的崗位,以防有人可以幫助有同樣的問題。

我試過在同一個項目中使用EF6和EF5,並且我注意到<entityFramework>標籤被搞砸了,並且得到了上述相同的問題。

這裏是我做的,它解決了這個問題: 從我的MVC應用程序卸載

  • 實體框架使用的NuGet
  • 安裝實體

    1. 我從Web.config文件刪除<的EntityFramework >標籤框架再次向我的MVC應用程序

    刪除<實體框架>標記一個重新安裝EF5它已經修復,我可以再次腳手架控制器。

  • +1

    謝謝,這工作完美 – 2014-10-09 20:10:27

    0

    我有同樣的問題,下面是爲我解決問題的變化。必須改變本地主機。並添加了初始目錄=電影。

    之前

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

    後(FIX)

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

    參考:

    ASP .Net MVC 4, Invalid value for key 'attachdbfilename'

    相關問題