web-dev-qa-db-ja.com

Entity Framework 4とSQL Compact 4:データベースの生成方法

Entity Framework 4とSQL Compact 4を備えたアプリを、Model Firstアプローチを使用して開発しています。 EDMを作成しましたが、モデルのデータストアとして機能するSQL Compact 4.0データベースを生成したいと思います。 Generate Database Wizardを表示し、-New Connectionボタンをクリックして、生成されたファイルの接続を作成します。 Choose Data Sourceダイアログが表示されますが、SQL Compact 4.0は使用可能なデータソースのリストに表示されません。

enter image description here

VS 2010 SP1(ベータ版)を実行しており、VS 2010 Tools for SQL Compact 4.0をインストールしました。サーバーエクスプローラーからSQL Compact 4.0データ接続を作成できます。 4.0オプションが表示されないのはGenerate Database Wizardのみです。ところで、私のSQL Compact 4.0インストールにはSystem.Data.SqlServerCe.Entity.dllが含まれています。したがって、必要なSQL Compactコンポーネントが必要です。

何か間違っているのですか、それともバグですか?誰か修正または回避策がありますか?ご協力いただきありがとうございます。

27
David Veeneman

回避策として、Generate Database Wizardを使用して、SQL Compact 3.5スクリプトを生成します。これは、で作成された空のSQL Compact 4.0データベースに対して実行しています。 VS 2010 Solution Explorer。そのタスクを実行する手順は次のとおりです。

ステップ1:Generate Database Wizardを実行します。最初のページでファイルの作成を要求するので、SQL Compact 3.5ファイルを作成します。このファイルはダミーなので、名前を付けてもかまいません。

ステップ2:ウィザードを完了して、新しいデータベースを構成するDDLスクリプトを作成します。

手順3:手順1で作成したダミーファイルを削除します。

ステップ4: VS 2010のサーバーエクスプローラーを使用して、プロジェクトで使用する実際のSQL Compact 4.0ファイルを作成します。

ステップ5:Generate Database Wizardは、SQL Compact "3.5"への2つの参照をEDMXファイルに配置します。これらの参照を「4.0」に変更する必要があります。 VS 2010のXMLエディターでEDMXファイルを開きます(右クリックして[アプリケーションから開く]を選択してXMLエディターを開きます)。行7には「3.5」の参照が含まれている必要があります。これらを「4.0」に変更してファイルを保存します。

手順6:生成されたEDMX.SQLCEスクリプトファイルをVS 2010で開きます。VSは(作業ウィンドウの下部にあるバナーを介して)スクリプトが切断されていることを示します。バナーの上の空白部分を右クリックし、表示されるコンテキストメニューで接続>接続を選択します。接続ダイアログが表示されます。このダイアログを使用して、ステップ4で作成したSQL Compact 4.0データベースにスクリプトを接続します。

ステップ7:スクリプトの空白をもう一度右クリックし、コンテキストメニューからExecute SQLを選択します。スクリプトが実行され、スクリプトの下のペインに通常の結果メッセージが表示されます。実行が成功した場合、データベースはエンティティデータモデルと一致するように構成されます。

ステップ8: App.config/web.configがダミーファイルを指していないことを確認する必要もあります。変更されている場合は、上記のステップ4で作成した実際のCE 4.0ファイルに変更します。そうしないと、モデルに変更を加えたときにスクリプトの再生成に問題が発生します。設定ファイルで3.5も4.0に変更します。

その時点で、Entity Framework 4を使用してデータベースを操作できるはずです。

34
David Veeneman

以下のコメントに回答し、次のように対処します。 http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/Microsoft-sql-server-compact-4-0-is -available-for-download.aspx

これらのウィザードは機能しません。

VBまたはVisual Studio 2010 SP1 BetaのC#Windowsプロジェクトのデザイナー:次のウィザードは、WindowsプロジェクトシステムのCompact 4.0では機能しません。開発者はADO.NETプロバイダーへの参照を手動で追加できますCompact 4.0(System.Data.SqlServerCe)がWindowsプロジェクトでCompact 4.0のプログラムを開発する場合:

  1. データソースの構成Wizardデータセットの構成に使用されます。
  2. Sync FXを使用してSQL Serverでデータとスキーマの同期をセットアップするために使用されるデータ構成の構成ウィザード。
  3. コンパクトデータベースからエンティティを生成するために使用されるエンティティデータモデルウィザード。

これらの問題の承認済みの回避策を次に示します。 http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

2
Dimentox

私の理解では、VS 2010の現在のバージョンはSQL CE 4.0をサポートしていません。 VS 2010SP1に含まれている必要があります(現在ベータ版)。チェック このブログの投稿 は、SP1のSQL CE 4.0でのEFモデルの使用についても説明しています。

編集:

私はこれを発見しました 回避策

1
Ladislav Mrnka

IDatabaseInitializerを使用して、コードでデータベースを作成できます。

if (File.Exists("Test.sdf"))
    File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = <password>";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();

SqlCeConnection conn = null;

try {
    conn = new SqlCeConnection(connStr);
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)";
    cmd.ExecuteNonQuery();

catch {
finally {
    conn.Close();

http://msdn.Microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v = vs.80).aspx

1
Roland

私はGenerate Database Wizardを実行できます。私のChinook.Dataプロジェクトからの問題はありません。app.configに適切な接続文字列があることを確認してください。 http:// erikej。 blogspot.com/2010/11/using-entity-framework-with-sql-server.html

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=C:\projects\Chinook\Chinook40.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
0
ErikEJ

さらに、WebMatrixデータベースツールを使用します。

Microsoft WebMatrix

0
takepara

おそらく SQL Server Compact 4 tools もインストールする必要があります。VisualStudio 2010 SP1のインストール時に直接インストールされなかった場合は、インストールできます。これは私が問題を抱えていたときに私のために働いたものです。

0
melutovich