Add controller error unable to retrieve metadata

62,741

Solution 1

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

from:here

Solution 2

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

Solution 3

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.

Solution 4

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

Share:
62,741
Majid
Author by

Majid

Interested in computer programming and artificial intelligence. :)

Updated on July 09, 2022

Comments

  • Majid
    Majid almost 2 years

    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?

  • Will Wu
    Will Wu almost 9 years
    In my case, I need to change connectionString="metadata***"。