Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLite+;EntityFramework 6设置_C#_Entity Framework_Sqlite_Datagridview - Fatal编程技术网

C# SQLite+;EntityFramework 6设置

C# SQLite+;EntityFramework 6设置,c#,entity-framework,sqlite,datagridview,C#,Entity Framework,Sqlite,Datagridview,一周多以来,我一直在努力让EF6和SQLite在WinForms应用程序中发挥出色。我似乎遇到了多个随机异常——这让我相信我做的事情不对。我似乎找不到合适的安装指南或教程 我直接从Nuget使用SQLite 1.0.93和EF 6.1.0 这是我的上下文类。我认为DbSet类没有问题 public class MyDbContext: DbContext { public MyDbContext() : base("name=dbConnection") {

一周多以来,我一直在努力让EF6和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>();
    }
}
公共类MyDbContext:DbContext
{        
public MyDbContext():base(“name=dbConnection”)
{
System.Data.Entity.Database.SetInitializer(null);
}
公共数据库集对象1{get;set;}
公共数据库集对象2{get;set;}
公共数据库集对象3{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions
.Remove();
}
}
通过这个,我还尝试用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());
        }
    }
公共静态BindingList对象1BindingList
{
得到
{
返回MyDbContext.Objects1.Local.ToBindingList();
}
}
公共静态BindingList对象S3BindingList
{
获取{返回MyDbContext.Objects3.Local.ToBindingList();}
}
私有静态MyDbContext_数据;
公共静态MyDbContext数据
{
得到
{
返回_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>

您必须先在Mozilla中使用SQLite管理器插件创建数据库


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

也许我对类似问题的回答能提供一些帮助: