web-dev-qa-db-fra.com

Ajout d'une erreur de contrôleur impossible pour récupérer les métadonnées

Je souhaite ajouter un contrôleur dans mon application MVC 4 sous VS2012 sous la forme de cette image:

add controller

Modèle:

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

Chaînes de connexion:

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

Après avoir cliqué sur "ajouter", cette erreur se produit:

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.

Toute suggestion?

18
Majid

Dans Web.config, définissez la deuxième variable providerName identique à la première variable providerName et, après avoir créé le contrôleur, annulez-le!

de: ici

19
Majid

Mon message peut aider si quelqu'un a le même problème.

J'ai essayé d'expérimenter EF6 et EF5 dans le même projet et j'ai remarqué que la balise <entityFramework> était foirée et que le même problème se présentait plus haut.

Voici ce que j'ai fait et cela a résolu le problème:

  1. J'ai supprimé la balise <entityFramework> de Web.config
  2. Structure d'entité désinstallée de mon application MVC à l'aide d'un nuget
  3. Entité installée installée à nouveau dans mon application MVC

Après avoir supprimé la balise <entityFramework> et réinstallé EF5, elle a été corrigée et je peux à nouveau échafauder mes contrôleurs.

5
Haitham Sweilem

Modifiez providerName="System.Data.SqlServerCe.4.0 En providerName="System.Data.SqlClient pour corriger cette erreur.

5
carlosCeron

N'oubliez pas de nettoyer et de reconstruire avant d'essayer d'échafauder! C'était mon erreur.

1
Scuba Steve

J'ai eu le même problème et ci-dessous est le changement qui a résolu le problème pour moi. Devait changer de localhost à. Et catalogue initial ajouté = Films. 

Avant

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

Après (réparer)

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

Référence:

ASP .Net MVC 4, valeur non valide pour la clé 'attachdbfilename'

0
marak

Utilisateur suivant pour providerName = "System.Data.SqlServerCe.4.0"

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