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

时间:2013-03-16 05:03:07

标签: c# asp.net .net asp.net-mvc visual-studio

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

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.

有什么建议吗?

8 个答案:

答案 0 :(得分:19)

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

here

答案 1 :(得分:5)

更改 providerName="System.Data.SqlServerCe.4.0providerName="System.Data.SqlClient来解决此错误。

答案 2 :(得分:5)

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

我尝试在同一个项目中尝试使用EF6和EF5,我注意到&lt; entityFramework&gt;标签搞砸了,上面遇到了同样的问题。

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

  1. 我删除了&lt; entityFramework&gt;来自Web.config的标记
  2. 使用nuget
  3. 从我的MVC应用程序中卸载实体框架
  4. 再次安装实体框架到我的MVC应用程序
  5. 删除&lt; entityFramework&gt;后标记并重新安装EF5它已修复,我可以再次使用我的控制器。

答案 3 :(得分:1)

在尝试安装脚手架之前,别忘了清洁和重建!那是我的错误。

答案 4 :(得分:0)

providerName = "System.Data.SqlServerCe.4.0"

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

答案 5 :(得分: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'

答案 6 :(得分:0)

确保上下文部分可以访问在该类库中创建的上下文。 例如: enter image description here

Persistence.DbContexts 不正确 你必须使用这个Persistence.DbContexts.DataDbContext

答案 7 :(得分:-1)

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