Nicht in der Lage, um zu bestimmen, der name des Anbieters für Anbieter Fabrik des Typs “System.Daten.Sqlite.SqliteFactory"
Will ich mit sqlite entity framework in meinem web-api-Projekt, aber es können nicht immer gut funktioniert,
hier ist meine Entwicklungs-Umgebung.
1.Visual studio 2013, .net framework 4.5
-
sqlite Paket-version 1.0.97, installierte ich unter Pakete
system.Daten.sqlite,
system.Daten.sqlite.ef6,
system.Daten.sqlite.linq -
EntityFramework ist 6.1.3
Hier ist die Ausnahme, dass ich
Nicht in der Lage, um zu bestimmen, der name des Anbieters für Anbieter Fabrik des Typs " System.Daten.SQLite.SQLiteFactory'. Stellen Sie sicher, dass die ADO.NET Anbieter installiert ist oder eingetragen in den application-config
Hier ist meine webconfig
HTML:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> <!--type="System.Data.SQLite.EF6.SQLiteProviderServices-->
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<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>
<connectionStrings>
<add name="Sqlite" connectionString="data source="D:\MyWebAPI\src\MyWeb.Api\App_Data\sqlite_test.db"" providerName="System.Data.SQLite.EF6" />
</connectionStrings>
</configuration>
Ich mich verbinden kann sqlite-Datenbank-Datei über "connect to database" im tool des visual studio, die ich auch erzeugen kann, die Entität der Verwendung von code first.
aber ich bekomme keine Daten normal
Hier ist mein code
HTML:
public partial class Sqlite : DbContext
{
public Sqlite()
: base("name=Sqlite")
{
}
public virtual DbSet<AuthorizationLog> AuthorizationLogs { get; set; }
public virtual DbSet<Checksum> Checksums { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AuthorizationLog>()
.Property(e => e.ClientKey)
.IsUnicode(false);
modelBuilder.Entity<AuthorizationLog>()
.Property(e => e.Login)
.IsUnicode(false);
modelBuilder.Entity<AuthorizationLog>()
.Property(e => e.Password)
.IsUnicode(false);
modelBuilder.Entity<AuthorizationLog>()
.Property(e => e.ConnectionString)
.IsUnicode(false);
}
}
HTML:
public class ValuesController : ApiController
{
//GET api/values
Sqlite ctx = new WebApi2Demo.Sqlite();
public IEnumerable<Checksum> Get()
{
return ctx.Checksums;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich die Antwort von mir, aber ich weiß immer noch nicht die Ursache, jetzt funktioniert es. Ich änderte webconfig, hier ist die webconfig machen, dass mein Projekt zu arbeiten.
Ich einen Anbieter Hinzugefügt, dass "das System.Daten.Sqlite", Bitte notieren Sie sich den Typ, das gleiche mit dem System.Daten.Sqlite.EF6
Hier ist alles konfigurieren.
Das war eine super-tolle Antwort zhnglicho!
Andere option, abgesehen von der Platzierung der Anbieter und DbProviderFactories in der app.config oder web.config, ist, den Quelltext ProviderFactories und verwenden Sie es in Ihrem Umsetzung der DbContext.
Aufzuhalten der Benutzung:
Config-Klasse:
Platzieren Sie diese in Ihrem Konstruktor:
Habe ich unit-tests für beide Methoden (dies und das zhnglicho Antwort) und ich habe nicht gefunden, einen speed-Unterschiede.
Debug-Ausgabe (immer ein Datensatz ist, und ein zufälliges Zitat aus der sqlitedb):
Ich bis-zum vorherigen Antwort, wie es für mich gearbeitet, aber dies ist nur ein Vorschlag, wenn Sie nicht wollen, um jack mit deine configs. ~ FRIEDEN!
sqlite entityframework