3

CF EF4.1、SQL Server Compact 4、およびMicrosoft Sync Frameworkを一緒に使用することは可能ですか?

私が得たように、MSSyncFrameworkにはSQLServerCompact 3.5が必要ですが、EF4.1はSQL ServerCompact4を使用しています...

更新 わかりました。Microsoft同期フレームワークを使用してmssqlce4を同期することはできません。では、mssql ce3.5をエンティティフレームワーク4.1のストレージとして使用することは可能ですか?

4

5 に答える 5

6

同期フレームワークは、そのプロバイダーを使用してデータベースに対して直接動作し、EF を経由することはそのままではサポートされていません。同じことが Sql Compact 4 にも当てはまります (Sql Compact 4 で有効にならないシナリオを参照してください)

于 2011-04-26T12:00:51.733 に答える
2

SQL CE 3.5はコードファーストアプローチでは機能しません(プロバイダーはDDL生成をサポートしていません)。ただし、EF4.1のモデルファーストまたはデータベースファーストのアプローチを使用すると、問題なく機能するはずです。

于 2011-06-25T13:30:34.217 に答える
2

はい、可能です - 作成または移行機能 (EF 5.0) に依存しない場合。

そのため、最初に app.config と名前付き構成を使用して、SQL CE プロバイダーを使用するように EF を構成します。

<connectionStrings>
    <add name="TestDatabase"
         providerName="System.Data.SqlServerCe.3.5"
         connectionString="Data Source=test.sdf"/>
</connectionStrings>

public class TestDbDataContext : DbContext
{
    public TestDbDataContext() : base("TestDatabase") { }
}

データ コンテキストを使用する前に、作成および移行機能を無効にする

Database.SetInitializer<TestDbDataContext>(null);

これでデータベースにアクセスできます。明らかに、手動でテーブルを作成する必要があります。

警告:

サーバー生成キーの挿入は、CE 3.5 では機能しません。そのため、クライアント側でそれらを管理する必要があります (キーの競合を防ぐために GUID を使用することをお勧めします)。さらに、キーを自分で管理する予定がある場合でも注意が必要です。このようにキーを定義する

[Key]
Guid Id { get; set; }

キーがサーバー側で生成されたと EF に信じ込ませます。したがって、EF の流暢な API を使用して主要なプロパティを定義し、DatabaseGeneratedOptionを Noneに設定する必要があります。

this.Property(p => p.ProductId)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
    .IsRequired();

this.HasKey(p => p.ProductId);

これは、構成クラス (サンプルのように) またはデータ コンテキストのOnModelCreating関数で実行できます。

于 2012-10-02T12:14:01.743 に答える
2

動作しません - SQL Server CE 4 に現時点で適用される制限については、このページを参照してください。

SQL Server でのデータ レプリケーション: Compact 4.0は、 Sync Framework、マージ レプリケーション、またはリモート データ アクセス (RDA)を使用した SQL Server でのデータ レプリケーションをサポートしていません。

于 2011-04-26T12:07:38.893 に答える
1

この投稿によると、SQL ServerCompact3.5はEntityFramework4.1コードファーストプロバイダーでは使用できません。EF4.1モデルファーストまたはデータベースファーストで使用できます。

于 2011-06-21T17:09:14.133 に答える