gpt4 book ai didi

c# - SQLite + EntityFramework 6 设置

转载 作者:IT王子 更新时间:2023-10-29 06:29:27 25 4
gpt4 key购买 nike

一个多星期以来,我一直在尝试让 EF 6 和 SQLite 在 WinForms 应用程序中很好地运行。我似乎遇到了多个随机异常——这让我相信我没有做正确的事情。我似乎找不到合适的设置指南或教程。

我正在使用直接来自 Nuget 的 SQLite 1.0.93 和 EF 6.1.0。

这是我的上下文类。我认为 DbSet 类没有问题。

public class MyDbContext: DbContext
{
public MyDbContext() : base("name=dbConnection")
{
System.Data.Entity.Database.SetInitializer<MyDbContext>(null);
}

public DbSet<Object1> Objects1 { get; set; }
public DbSet<Object2> Objects2 { get; set; }
public DbSet<Object3> Objects3 { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions
.Remove<PluralizingTableNameConvention>();
}
}

为此,我还尝试用 Db 数据填充两个单独的 DataGridView。

    public static BindingList<Objects1> Objects1BindingList
{
get
{
return MyDbContext.Objects1.Local.ToBindingList();
}
}

public static BindingList<Objects3> Objects3BindingList
{
get { return MyDbContext.Objects3.Local.ToBindingList(); }
}

private static MyDbContext _data;

public static MyDbContext Data
{
get
{
return _data ?? (_data = new MyDbContext());
}
}

我的 App.config

  <connectionStrings>
<add name="dbConnection"
connectionString="Data Source=.\data.sqlite" providerName="System.Data.SQLite" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description="Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
<!--
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".Net Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
-->
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.SQLiteProviderServices, System.Data.SQLite.Linq, Version=2.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>

有人能给我指点一个更新的、经过验证的教程,或者给我指点一个更好的方向吗?

谢谢。

最佳答案

我一直在尝试将 sqlite 与 asp.net mvc5 和 EF 6.1 一起使用,但到目前为止我一无所获,但我学到了一些我可以建议您查看 app.config 文件的东西:

    <connectionStrings>
<add name="dbConnection"
connectionString="Data Source=.\data.sqlite" providerName="System.Data.SQLite" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description="Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
<!-- Leave this in there if you want to have EF working with your project -->
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".Net Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />

</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.93.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
<!-- This only works for sql server localdb edition
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory> -->
</entityFramework>

以上是我的 web.config 中的内容,它让我开始了我的项目(因为 web.config 和 app.config 基本相同)唯一的问题是根据 http://hintdesk.com/sqlite-with-entity-framework-code-first-and-migration/您必须先在 Mozilla 中使用 SQLite 管理器插件创建数据库。

即使我这样做了,我仍然从这个“'System.InvalidOperationException' 类型的异常发生在 EntityFramework.dll 中但未在用户代码中处理”到其他类型的异常中得到一些异常。这真的很糟糕,但也许这可以让你走上正轨。

关于c# - SQLite + EntityFramework 6 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24418363/

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