0

SQL Compact Edition を使用して、この時点まで開発してきた MVC3 プロジェクトがあります。現在、別のマシンで実行されている SQL Server 2008 R2 に移行しようとしています。Visual Studio を使用してこのデータベースに接続し、既存の接続文字列を置き換えるために使用した接続文字列を取得しました。

<add name="CPContext" connectionString="Data Source=CSP111;Initial Catalog=CONTESTPLATFORM;Persist Security Info=True;User ID=sa;Password=<%MY PASSWORD%>" providerName="System.Data.SqlClient" />
<!--Old Connection String
<add name="CPContext" connectionString="Data Source=|DataDirectory|ContestPlatform.sdf" providerName="System.Data.SqlServerCe.4.0" />
-->

初期化クラスを使用して、データベースにいくつかの初期値をシードしています。これは、Global.asax.cs ファイルで次のように呼び出されます。

protected void Application_Start()
    {
        Database.SetInitializer<CPContext>(new ContestPlatformInitializer());

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

プロジェクトを実行しようとすると、データベースへの最初のアクセス試行時に例外がスローされます。

Model compatibility cannot be checked because the database does not contain model
metadata. Model compatibility can only be checked for databases created using Code 
First or Code First Migrations.

これは、例外をスローしているホームページのコードです。

IQueryable<Submission> submissions = db.Submissions.Where(s => s.ContestId == contestId && s.Entry.isPrivate != true && s.Entry.isApproved);

データベースにアクセスすると、テーブルが作成されていません。エンティティ フレームワークは初めてですが、ヘルプはありますか?

4

1 に答える 1

0

問題は、データベース オブジェクト (テーブル、ビューなど) もそれらのデータも存在しないという点で、新しいデータベースがまだ「作成」されていないことにあると思われます。

SQL CE には詳しくありませんが、データベースを CE から新しいサーバーに移行する必要があります。データベース サーバーは環境ごとに異なるため、プロジェクトを開発環境から運用環境に移行するときは、かなり頻繁にこれを行います。

CE データベースを Sql Server データベースにコピーする方法を確認してください。おそらく、Sql Server Business Development Studio でプロジェクトを作成してそれを行うことができます。

于 2012-05-09T04:18:15.643 に答える