gpt4 book ai didi

c# - 如何 : SQLite with EntityFramework and Code-First

转载 作者:IT王子 更新时间:2023-10-29 04:30:05 26 4
gpt4 key购买 nike

我正在尝试使用 EF 动态创建一个嵌入式 SQLite 数据库,但是我无法让它工作,数据库文件永远不会被创建。

我有 EF 4.2 和最新版本的 SQLite

这是我的

app.config

<?xml version="1.0"?>
<configuration>
<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=test.db;Version=3;New=True;"
providerName="System.Data.SQLite" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" />
</startup>
</configuration>

DB初始化器(放入一些内容)

class PageDbInitializer : DropCreateDatabaseAlways<PageDB>
{
protected override void Seed(PageDB context)
{
for (int i = 0; i < 10; i++)
{
WebPage page = new WebPage() { Name = "Page" + (i + 1) };
context.Pages.Add(page);
}
base.Seed(context);
}
}

数据库上下文:

class PageDB : DbContext
{
public DbSet<WebPage> Pages { get; set; }
}

最后在 main() 中

Database.SetInitializer( new PageDbInitializer() );

我相信我缺少一些步骤,但找不到它们。

最佳答案

System.Data.SQLite 在当前版本中仅与 EFv1 兼容提供程序(12)。这意味着它没有 EFv4(EFv4.2 是 EFv4 的包装器)功能,包括数据库创建和删除(在 MSDN 中查看 .NET 3.5 和 .NET 4.0 的 DbProviderServices 差异)。因此,在使用 SQLite 时,您不能使用代码优先自动创建数据库。您必须手动创建数据库和所有表。

作为替代方案,您可以为 SQLite 使用不同的提供程序。例如Devart's SQLite provide r 声称它支持 EFv4 和 4.1,因此支持数据库创建。

关于c# - 如何 : SQLite with EntityFramework and Code-First,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com