Add controller error unable to retrieve metadata

2019-01-14 02:43发布

I want to add controller in my MVC 4 application in VS2012 as this image:

add controller

Model:

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; }
    }
}

Connection strings:

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

After clicking "add", this error occurs:

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.

Any suggestion?

7条回答
男人必须洒脱
2楼-- · 2019-01-14 03:19

Don't forget to clean and rebuild before you try to scaffold! That was my mistake.

查看更多
何必那么认真
3楼-- · 2019-01-14 03:21

In Web.config, set second providerName same as first providerName, and after creating controller, undo that!

from:here

查看更多
乱世女痞
4楼-- · 2019-01-14 03:23

In web.config, delete the AttachDBFilename=|DataDirectory|****.mdf line.

查看更多
太酷不给撩
5楼-- · 2019-01-14 03:29

Change providerName="System.Data.SqlServerCe.4.0 to providerName="System.Data.SqlClient to fix this error.

查看更多
不美不萌又怎样
6楼-- · 2019-01-14 03:32

My post may help in case someone has the same problem.

I tried experimenting with EF6 and EF5 in the same project, and I noticed that the <entityFramework> tag was messed up, and got the same problem above.

Here is what I did, and it solved the problem:

  1. I removed the <entityFramework> tag from Web.config
  2. Uninstalled entity framework from my MVC app using nuget
  3. Installed entity framework to my MVC app again

After removing the <entityFramework> tag and re-installing EF5 it was fixed, and I can scaffold my controllers again.

查看更多
一夜七次
7楼-- · 2019-01-14 03:33

User following for providerName = "System.Data.SqlServerCe.4.0"

<add name="MovieDBContext" 
connectionString="Data Source=|DataDirectory|\Movies.sdf"
providerName="System.Data.SqlServerCe.4.0" />
查看更多
登录 后发表回答