2013-08-25 26 views
5

私は.accdbファイルを使用しています。 "nullを返します "System.Data.OleDb.OleDbConnection "リポジトリtypeof演算に" get_ProviderFactory" を呼び出す":私はProviderIncompatibleExceptionを取得DBへの最初のクエリの後、クラスMicrosoft Accessを使用するEntity Framework

using System.Data.Entity; 

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

と追加したconnectionString

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

を作成しました

答えて

6

接続文字列は、.mdb(Access 2003-)ファイル用です。接続を確認するstrings here

ACE OLEDBプロバイダが必要です。標準セキュリティ:しかし

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

は、最初this threadを読む:あなたの 接続文字列が動作しませんので

Entity Frameworkのは、OLEDB接続をサポートしていません。 Entity FrameworkをMS Accessと共同作業することは事実上不可能です。

は非常に魅力的です。

5

エンティティフレームワークでは、エンティティフレームワークプロバイダが特定のデータベースに対して適切なクエリを生成する必要があるため(OLEDBは一般的なDBアクセス)、OLEDBはエンティティフレームワークをサポートできません。 Microsoft Accessには特定のプロバイダが必要です。

することはできここでのMicrosoft Access Entity Frameworkのプロバイダを見つける https://jetentityframeworkprovider.codeplex.com/

EDITアクセスEFプロバイダは今[CodePlexのがシャットダウンされることを発表考えるとGitHubの
https://github.com/bubibubi/JetEntityFrameworkProvider

+0

でホストされている
](https://blogs.msdn.microsoft.com/bharry/2017/03/31/shutting-down-codeplex/)プロジェクトをGitHubに移動しますか? –

+2

私はそれを見ませんでした。私はそれをギブスに移します。ありがとう! – bubi

関連する問題