2013-08-25 15 views
5

Ich verwende. ACCDB-Datei. Ich habe KlasseEntity Framework mit Microsoft Access

using System.Data.Entity; 

    class MSADbContext:DbContext 
    { 
     public DbSet<Product> Products { get; set; } 
    } 

und fügen Sie Connection

<add name="MSADbContext" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\SportsStore.accdb" providerName="System.Data.OleDb"/> 

Nach dem ersten Abfrage DB ich die ProviderIncompatibleException erhalten: get_ProviderFactory "in Repository typeOf "System.Data.OleDb.OleDbConnection" null zurück "" Aufruf"

Antwort

6

Ihre Verbindungszeichenfolge wäre für eine .mdb (Access 2003-) Datei. Überprüfen Sie die Verbindung strings here

Sie benötigen den ACE OLEDB-Anbieter. Standard Sicherheit:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb; 
Persist Security Info=False; 

jedoch lesen this thread zuerst:

Entity Framework unterstützt nicht OLEDB-Verbindungen, so dass Ihre Verbindungszeichenfolge wird nicht funktionieren. Es ist praktisch unmöglich, Entity Framework mit MS Access zusammenzuarbeiten.

praktisch unmöglich ist sehr überzeugend.

5

OLEDB kann Entitätsframework nicht unterstützen, da Entitätsframework benötigt, dass der Entitätsframeworkanbieter die richtigen Abfragen für die bestimmte Datenbank generiert (während OLEDB allgemeiner DB-Zugriff ist). Sie benötigen einen bestimmten Anbieter für Microsoft Access.

Sie können ein Microsoft Access Entity Framework Provider finden hier https://jetentityframeworkprovider.codeplex.com/

EDIT
Der Zugang EF-Anbieter jetzt auf GitHub gehostet wird
https://github.com/bubibubi/JetEntityFrameworkProvider

+0

die Ankündigung, dass [CodePlex unten werden herunter ] (https://blogs.msdn.microsoft.com/bharry/2017/03/31/shutting-down-codeplex/) werden Sie Ihr Projekt auf GitHub verschieben? –

+2

Ich habe es nicht gesehen. Ich werde es nach Github verschieben. Vielen Dank! – bubi