web-dev-qa-db-ja.com

メタデータを取得できないコントローラーエラーを追加

このイメージとして、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.

なにか提案を?

18
Majid

Web.config、2番目のproviderNameを最初のproviderNameと同じに設定し、コントローラーを作成した後、元に戻します!

from: ここ

20
Majid

私の投稿は、誰かが同じ問題を抱えている場合に役立つかもしれません。

同じプロジェクトでEF6とEF5を試してみましたが、<entityFramework>タグが台無しになっていることに気付き、上記と同じ問題が発生しました。

これが私がやったことであり、問​​題を解決しました:

  1. Web.configから<entityFramework>タグを削除しました
  2. Nugetを使用してMVCアプリからエンティティフレームワークをアンインストールしました
  3. エンティティフレームワークをMVCアプリに再度インストールしました

<entityFramework>タグを削除してEF5を再インストールすると修正され、コントローラーを再び設置できます。

5
Haitham Sweilem

変化する providerName="System.Data.SqlServerCe.4.0からproviderName="System.Data.SqlClientこのエラーを修正します。

5
carlosCeron

足場を試みる前に、掃除して再構築することを忘れないでください!それが私の間違いでした。

2
Scuba Steve

私は同じ問題を抱えており、以下は私のために問題を修正した変更です。 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'の無効な値

0
marak

providerName = "System.Data.SqlServerCe.4.0"をフォローしているユーザー

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