#jet-ef-provider
Вопрос:
После компиляции моего проекта в VS2017 15.9.21
for.NET 4.5, я получил следующую ошибку, что я упускаю?
Unable to determine the provider name for provider factory of type 'JetEntityFrameworkProvider.JetProviderFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.
Именно здесь возникает исключение:
JetConnection.ShowSqlStatements = True
Dim fac1 = New JetConnectionFactory()
Dim con1 = fac1.CreateConnection(ORMGlobal.ConnectionString)
Using db As ORM = New ORM(con1)
Dim model = db.People.Count()
' ...
End Using
Это моя настройка DbContext:
Partial Public Class ORM
Inherits DbContext
Public Sub New()
MyBase.New()
Database.SetInitializer(New NullDatabaseInitializer(Of ORM))
End Sub
Public Sub New(con As Common.DbConnection)
MyBase.New(con, True)
Database.SetInitializer(New NullDatabaseInitializer(Of ORM))
End Sub
' ...
End Class
Это мой config.app
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<entityFramework>
<providers>
<provider invariantName="JetEntityFrameworkProvider" type="JetEntityFrameworkProvider.JetProviderServices, JetEntityFrameworkProvider" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="JetEntityFrameworkProvider"/>
<add invariant="JetEntityFrameworkProvider" name="Jet Entity Framework Provider" description="Jet Entity Framework Provider"
type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
</DbProviderFactories>
</system.data>
</configuration>
Сведения об исключении:
Exception thrown: 'System.NotSupportedException' in EntityFramework.dll
5/20/2021 3:49:07 PM :dwl: :LV:: Error in ConnectToDSN: System.NotSupportedException: Unable to determine the provider name for provider factory of type 'JetEntityFrameworkProvider.JetProviderFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.
at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderInvariantName(DbProviderFactory factory)
at System.Data.Entity.Infrastructure.DependencyResolution.DefaultInvariantNameResolver.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.<>c__DisplayClass4_0.<GetService>b__0(Tuple`2 k)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass5_0.<GetService>b__0(IDbDependencyResolver r)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.RootDependencyResolver.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass5_0.<GetService>b__0(IDbDependencyResolver r)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key)
at System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInvariantName(DbConnection connection)
at System.Data.Entity.Internal.InternalConnection.get_ProviderName()
at System.Data.Entity.Internal.LazyInternalContext.get_ProviderName()
at System.Data.Entity.Internal.DefaultModelCacheKeyFactory.Create(DbContext context)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.Initialize()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
at TheBoardRoom.LockView.SQLdbHandler.ConnectToDSN(String sConnDSN, ADOConnectionamp; connDB)
Комментарии:
1. Я думаю, что эта фабрика требует регистрации GAC. Попробуйте подключиться напрямую с помощью JetConnection.
2. На какой фабрике? Я просто добавил оба
JetEntityFrameworkProvider
иEntityFramework
в GAC, а затем перестроил. Тот же результат, ошибка сохраняется.3. Вместо
(New JetConnectionFactory()).CreateConnection(ORMGlobal.ConnectionString)
этого попробуйте использоватьNew JetConnection(ORMGlobal.ConnectionString)
.4. Я так и сделал. Но это ничего не исправит. Есть такое же исключение. Я думаю, что как-то
JetEntityFrameworkProvider
неправильно зарегистрированconfig.app
. Для справки, я использую последнююEF6.4.4
версию . Вы сделали этуJetEntityFrameworkProvider
работу в VS2017 VB.NET проект?