【问题标题】:SQLite with EF Code FirstSQLite 与 EF 代码优先
【发布时间】:2010-12-13 12:02:55
【问题描述】:

在我成功使用带有 NHibernate 的 SQLite 之后,我很高兴将它用于使用 Entity Framework Code First 进行测试。

如果您有一些示例连接字符串并设置演示,那就太好了,并且可以从我忙碌的一天中节省一点时间。

非常感谢。

编辑:

值得一提的是,在通过 EF“数据上下文”应用 crud 操作时,我在调试过程中遇到此错误:

无法确定“System.Data.SQLite.SQLiteConnection”类型连接的提供程序名称。

<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" />
    </DbProviderFactories>
</system.data>


<connectionStrings>
    <add name="DataContext"
         connectionString="Data Source=:memory:;Version=3;New=True;"
         providerName="System.Data.SQLite"
     />
</connectionStrings>

希望 EF 确实以这种方式与 SQLite 集成。尽管错误消息令人震惊地表明可能不是。

【问题讨论】:

  • 你的问题已经解决了吗?

标签: entity-framework sqlite entity code-first


【解决方案1】:

您需要使用程序集限定名:

<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.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />

【讨论】:

  • 连接字符串呢?
【解决方案2】:

Code First 应该可以与任何 ADO.NET 3.5 级别的提供程序(它们实现实体框架功能)一起正常工作。

支持 4.0 的提供程序还添加了 DeleteDatabase/CreateDatabase/DatabaseExists 功能。

除此之外,Code First 不需要额外的提供程序功能。

它会查看连接的类型,然后尝试将其映射回提供者及其提供者工厂,以便它可以创建它需要的所有其他内容。

值得检查以确保您的 GAC 中安装了支持 3.5 级别功能的最新 SQLLite 提供程序。

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2012-05-17
    • 2018-02-13
    相关资源
    最近更新 更多