3

我正在使用 Entity Framework 4 代码优先方法自动创建 SQLite 数据库,我收到一条错误消息,告诉我 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: If you're using SQLite provider from https://system.data.sqlite.org/‎, then it doesn't support Migrations (such as Create Database). You can use a commercial one (like from Devart) or you write your own Migration. This article uses the concept from Android to make a simple Migration strategy http://hintdesk.com/sqlite-with-entity-framework-code-first-and-migration/ . Take a look if it helps you.

于 2014-03-07T19:50:55.017 回答