3

SQLite データベースを自動的に作成するために Entity Framework 4 コードの最初のメソッドを使用していますが、ProviderIncompatibleException というエラーが表示されます。

[System.Data.ProviderIncompatibleException] = {"CreateDatabase is not supported by the provider."}

私はEF 4がそれをサポートしていると思いましたか?

私はapp.configでこれを使用しています:

<system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite"           
           description=".Net Framework Data Provider for SQLite"                      
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
  </system.data>

ありがとうございました。

4

3 に答える 3

3

Code-First (あなたが言及した CreateDatabase() メソッド) と Code-First Migrations (Code-First 開発への新しいアプローチ) の両方のサポートは、特定の EF プロバイダーのレベルで実装されています。System.Data.SQLite の場合、この機能はすべてプロバイダーに実装されていません。必要な場合は、他の EF プロバイダーを使用する必要があります。たとえば、Devart dotConnect for SQLite はCode-FirstCode-First Migrations の両方をサポートしています。

開発チーム

于 2012-08-29T07:30:15.610 に答える
1

多くの場合、SQLite データ プロバイダーが構築された .NET 2 と実際に使用している .NET 4 との間の互換性の問題が原因です。

このリンクを見てください。答えが得られるはずです: system.data.sqlite .net 4

これは、モデルが配置されている app.config または web.config だけでなく、エントリポイント プロジェクト (.exe、または asp.net プロジェクトなど) にも適用する必要があることに注意してください。

于 2012-08-29T04:30:47.517 に答える
0

@Kev Fixx: https://system.data.sqlite.org/の SQLite プロバイダーを使用している場合、移行 (データベースの作成など) はサポートされません。商用のもの (Devart など) を使用することも、独自の移行を作成することもできます。この記事では、Android の概念を使用して、単純な移行戦略http://hintdesk.com/sqlite-with-entity-framework-code-first-and-migration/を作成します。それがあなたを助けるかどうか見てください。

于 2014-03-07T19:50:55.017 に答える