ProjectA includes EF code, and is normally hosted in MVC project. Now I'd like to "wrap" it in a Azure (v1) function (lets call ProjF), in order to expose on a consumptionplan (so we can scale the heavy calls).
So I ref ProjA, fine. But how to get all the EF settings over? Connectionstring goes via fina via host.settings.json, but the remaining from web.config ?
(notice we use PostgresSql and Devart). Since the azure function has no app.config or web.config, these settings has to be set elsewhere.
Relevant sections from web.config:
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
and
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Devart.Data.PostgreSql" type="Devart.Data.PostgreSql.Entity.PgSqlEntityProviderServices, Devart.Data.PostgreSql.Entity.EF6, Version=7.12.1328.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Devart.Data.PostgreSql" />
<add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.12.1328.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
</DbProviderFactories>
</system.data>
Have looked at the solution from
How to specify EntityFramework ProviderName in an Azure Function
but cannot figure out what values to use since we're using Postgres + Devart
When app.config is not available, you can add register DbProviderFactory and EF6 provider via code. An example is here: https://forums.devart.com/viewtopic.php?t=28550#p97525.
I' am getting this:
The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.
error in my Entity Framework.
I read this Question and the possible answers, however non of them worked for me. Here is my App.config file:
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="SalesReportEntities"
connectionString="metadata=res://*/SalesReportModel.csdl
|res://*/SalesReportModel.ssdl
|res://*/SalesReportModel.msl;
provider=System.Data.SqlClient;
provider connection string="data source=.;
initial catalog=Training;
integrated security=True;
MultipleActiveResultSets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
What other possible things can cause this error?
I can offer a few suggestions and some are similar to the thread you already looked at:
Can you use SQL Management Studio and verify this database exists and has tables and is currently in a responsive state?
Put your 'connectionStrings' section after the < providers > node.
Your parameter value is 'v11.0' which seems to be targeting a version of SQL Server 2012. Mine that I am looking at now is similar to yours but just states: "mssqllocaldb". Which I believe is just the default instance of sql server from the connection you specify.
Uninstall Entity Framework completely and get it again from NuGet. I assume you are using Visual Studio so in 2015 it is Tools>NuGet Package Manager>Manage NuGet Packages. Uninstall, check your app config and 'References' that 'EntityFramework' is gone. Reinstall and check your settings again.
Are you trying to reference a project that entity lives in in another project or is it self contained? If so you need to target EF just like you were on the source project with adding EF to that project and a config the same.
You may also want to post the entire exception for better answers too.
Good evening everyone. I try to use SQL Server Compact Edition and Entity Framework in simplest console application. But I get the following exception.
The Entity Framework provider type
'System.Data.Entity.SqlServerCompact.SqlCeProviderServices,
EntityFramework.SqlServerCompact' registered in the application config
file for the ADO.NET provider with invariant name
'System.Data.SqlServerCe.4.0' could not be loaded. Make sure that the
assembly-qualified name is used and that the assembly is available to
the running application. See
http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
So I started find the answer in the internet. After googling I found the following answers in StackOverflow:
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0'
I did the following configuration file.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<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>
<connectionStrings>
<add name="SQLCE.DAL.BreakAwayContex" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=D:\TestDatabase.sdf" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
But I still have this exception. So how can I fix it? Thank you very much for answer or your device.
Have a nice evening.
i have a project that is been started two months ago ! i'm using [LASG]:https://layerguidance.codeplex.com/ Architecture for my Solution !
i'm working in my solution well since i have received the " No Entity Framwork provider found for the ADO.net Provider with invarient name 'System.Data.SqlClient' "
the application config file contain the full block of provider
this is my app.config file :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="MASTERGESTION" connectionString="Data Source=ZZZZ\ZZZZZ;Initial Catalog=XXXXXX;User ID=YY;Password=ZZZZZZ" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
I copied the project in other computer, after building the solution, it start normally and without provider error
I rebuild the solution many times, i re-add references manually with no response!
Any help please? i loose six hours for no reason
The defaultConnectionFactory shouldn't be:
System.Data.Entity.Infrastructure.LocalDbConnectionFactory
Instead make it:
System.Data.Entity.Infrastructure.SqlConnectionFactory
I assume it worked on the second machine as that has LocalDb installed and the first one doesn't.
Try instead of
User ID=YY;Password=ZZZZZZ
to use
Integrate Security=True
also add in <context>
<context type="tablename, databasename">
<databaseInitializer type="databasename.Migrations.tablenameInitializer, databasename" />
</context>
I have a similar problem as the one presented in the question
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient', the error has the following message:
"The ADO.NET provider with invariant name 'System.Data.SqlClient' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details."
As the answers to the related question suggest, I have reinstalled Entity Framework (EF6) via the Package Manager Console, but the error persists. I also checked that EntityFramework.SqlServer.dll is referenced in my project.
Here is the connection string as stored in App.config:
<add name="DesignModel" ConnectionString="metadata=res://*/DesignModel.csdl|res://*/DesignModel.ssdl|res://*/DesignModel.msl;provider=System.Data.SqlClient;provider connection string="data source=C071E;initial catalog=CTD2;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
I have another project where I used EntityFramework to create the exact same entities and context, and it works fine, which makes this all more puzzling.
The error is shown when trying to execute this lines:
DesignModel designContext = new DesignModel();
designContext.MoPerfIDs.Load();
where DesignModel is the name of the class that inherits DbContext.
Here's the full App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="ppe.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DesignModel" connectionString="metadata=res://*/DesignModel.csdl|res://*/DesignModel.ssdl|res://*/Design Model.msl;provider=System.Data.SqlClient;provider connection string="data source=MONNMC071E;initial catalog=CTD2;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlClient" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Any help will be appreciated. Thanks in advance.
You need to register the Entity Framework provider for the System.Data.SqlClient SQL connection type.
you should have in app.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
Still not sure what was causing the problem, but ended up creating a new solution and copying everything from my project. Now works fine. Really weird, indeed.
Simply install "MySql.Data.Entity" from nuget! It will install mysql ado driver and entity driver automatically!
Wow...that is pretty special...Anyways. You need to register the Entity Framework provider for the System.Data.SqlClient SQL connection type.
You want to add the following to your app.config/web.config
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlClient" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
There are 2 options which you can try.
1) Load "System.Data.SqlClient" manually
Include the follow statement in your context class
var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
2) Don't load "System.Data.SqlClient"
By change from
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
to
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
I hope your issue is resolved.
Try adding
var _ = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
in the ctor of your designContext.
The problem in my case was that inorder to catch another exception I had enabled CLR exceptions. And I forgot to disable it.
I disabled it in my exception setting. and it overlooked this exception and went on to run and create a db for me (in my case) automatically.
I got this error but for me it was something entirely different.
I had to edit:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
And:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
Searching for DbProviderFactories both configs looked like this:
<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</DbProviderFactories>
<DbProviderFactories />
</system.data>
When I removed the trailing <DbProviderFactories /> everything started working again.
I was able to solve it by looking at only Unable to find the requested .Net Framework Data Provider and finding this answer:
https://stackoverflow.com/a/9929534/3850405
If you get this error on Visual Studio while debugging, this happens after you installed another DB provider or IDE with DB Provider. I faced this error after I installed Delphi on my computer.
Solution: Just edit C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config and remove tags.