添加控制器错误无法检索元数据

问题描述 投票:18回答:7

我想在VS2012中的MVC 4应用程序中添加控制器作为此图像:

模型:

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.

有什么建议吗?

c# asp.net .net asp.net-mvc visual-studio
7个回答
19
投票

Web.config中,设置第二个providerName与第一个providerName相同,并在创建控制器后,撤消它!

来自:here


5
投票

如果有人遇到同样的问题,我的帖子可能有帮助。

我尝试在同一个项目中试验EF6和EF5,我注意到<entityFramework>标签搞砸了,上面遇到了同样的问题。

这就是我所做的,它解决了这个问题:

  1. 我从Web.config中删除了<entityFramework>标记
  2. 使用nuget从我的MVC应用程序中卸载实体框架
  3. 再次安装实体框架到我的MVC应用程序

删除<entityFramework>标签并重新安装EF5后,它已修复,我可以再次使用我的控制器。


5
投票

providerName="System.Data.SqlServerCe.4.0更改为providerName="System.Data.SqlClient以修复此错误。


1
投票

在尝试脚手架之前不要忘记清洁和重建!那是我的错。


0
投票

用户关注providerName = "System.Data.SqlServerCe.4.0"

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

0
投票

我有同样的问题,下面是为我解决问题的变化。不得不改变localhost。并添加了初始目录=电影。

之前

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

之后(修复)

<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'


-1
投票

web.config,删除AttachDBFilename=|DataDirectory|****.mdf线。

© www.soinside.com 2019 - 2024. All rights reserved.