21

我想在 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.

有什么建议吗?

4

8 回答 8

22

Web.config中,将 second 设置providerName为与 first 相同providerName,并在创建控制器后撤消该操作!

来自:这里

于 2013-03-16T07:43:37.223 回答
5

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

于 2013-03-18T20:30:40.987 回答
5

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

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

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

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

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

于 2014-07-21T04:53:32.970 回答
3

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

于 2018-10-19T00:07:41.750 回答
0

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

于 2013-08-17T10:57:59.983 回答
0

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

<add name="MovieDBContext" 
connectionString="Data Source=|DataDirectory|\Movies.sdf"
providerName="System.Data.SqlServerCe.4.0" />
于 2013-11-07T19:53:53.243 回答
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,键“attachdbfilename”的值无效

于 2016-10-20T21:56:15.693 回答
0

确保上下文部分可以访问在该类库中创建的上下文。例如: 在此处输入图像描述

Persistence.DbContexts 不正确您必须使用此Persistence.DbContexts.DataDbContext

于 2021-07-25T07:20:53.830 回答