2013-08-25 10 views
5

Uso il file accdb. Ho creato classeEntity Framework con Microsoft Access

using System.Data.Entity; 

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

e aggiungere connectionString

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

Dopo prima query al DB ho la ProviderIncompatibleException: "chiamata "get_ProviderFactory" in repository TypeOf "System.Data.OleDb.OleDbConnection" restituisce null"

risposta

6

La stringa di connessione sarebbe per un file .mdb (Access 2003-). Verifica connessione strings here

È necessario il provider OLE DB. Security Standard:

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

Tuttavia, leggere this thread prima:

Entity Framework non supporta le connessioni OLE DB, quindi la stringa di connessione non funzionerà. È praticamente impossibile ottenere Entity Framework per collaborare con MS Access.

praticamente impossibile è molto convincente.

5

OLEDB non supporta il framework di entità poiché il framework di entità richiede che il provider di entità framework generi le query corrette per il database specifico (mentre OLEDB è l'accesso di DB generale). È necessario un provider specifico per Microsoft Access.

è possibile trovare un provider di Microsoft Access Entity Framework qui https://jetentityframeworkprovider.codeplex.com/

EDIT
il fornitore di accesso EF è ora ospitato su GitHub
https://github.com/bubibubi/JetEntityFrameworkProvider

+0

Data l'annuncio che [CodePlex sarà in fase di arresto ] (https://blogs.msdn.microsoft.com/bharry/2017/03/31/shutting-down-codeplex/) sposterai il tuo progetto in GitHub? –

+2

Non l'ho visto. Lo sposterò su Github. Grazie! – bubi