Using unmanaged Oracle.DataAccess driver with MVC5 and Entity Framework 6 - asp.net-mvc

For reasons beyond my control I have a working MVC5 app with an API using Entity Framework 6 and the Oracle Managed Data Access driver, but I need to switch this to use the unmanaged Oracle driver. I have Oracle Client v12.3 installed. I tried removing the managed Oracle .NET NuGet packages, referenced the unmanaged driver in the project, and changed all of the Oracle.ManagedDataAccess references to Oracle.DataAccess. The Oracle Client install seems okay because I have an older app that works and uses the unmanaged Oracle driver. Both apps are connecting to the same database.
The MVC app compiles and runs however when it attempts to connect to the database I get the following error when it constructs the DbConnection:
The Entity Framework provider type
'Oracle.DataAccess.EntityFramework.EFOracleProviderServices,
Oracle.DataAccess.EntityFramework, Version 4.112.3.0, Culture=neutral,
PublicKeyToken=89b483f429c47342' registered in the application config
file for the ADO.NET provider with invariant name 'Oracle.DataAccess'
could not be loaded. Make sure that the assembly-qualified name is
used and that the assembly is available to the running application.
Does the Oracle unmanaged driver support EF6 and if so what configuration am I missing to allow it to load the driver? Thanks!

EF6 does support Oracle.DataAccess. However, you can't do it via Nuget. Look at the link below for some guidance for someone that's actually resolve it.
Nuget package for Oracle Unmanaged Provider with Entity Framework

Related

How to connect SQL Server Compact Edition database .sdf file to ADO Connection

I am trying to use a small .sdf database file created in SQL Server Compact Edition version 4.0 on Delphi application, but I cannot make a connection (ADO Connection) to this database. I have Windows 10 64bit OS, Delphi 10.2
I found tutorial for connection to .sdf file created on 3.5 version on this link:
http://slamingcode.blogspot.com/2014/06/connecting-delphi-with-sdf-sql-compact.html
It probably works on .sdf files created on 3.5 version, but when I try to connect "my file", I got error saying that database is created on different version and that I need to install specific DB provider.
So, I installed SQL Server Compact Edition v4.0, but it is only available for 64-bit system. After that, I manage to open and view database through LinqPad application (proof that DB provider was installed and that DB is created in version 4 of SSCE). But, in Delphi, there was no DB provider for SSCE v4.0 on ADO connection in the list.
Based on tutorial for setup 3.5 version in the link above, I found proper (I think) registry key for v4.0 (HKEY_CLASSES_ROOT\WOW6432Node\CLSID{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}) and added Key "OLE DB Provider" with value "Microsoft SQL Server Compact OLE DB Provider".
Now, I see DB provider in list of providers when I try to make Connection String. But, when I try to use that provider, I got Microsoft Data Link Error:
Provider is no longer available. Ensure that the provider is installed properly
Is it possible to connect Delphi to a .sdf file via ADO connection (or any other) and how?

EntityFramework (database first) using Azure managed identity for SQL DB

I'm in the process of converting the existing .Net framework project that uses EF 6 with Database First approach (EDMX) file to .Net Standard 2.1 which connects to SQLDB hosted on Azure.
Existing EDMX file has a constructor (auto generated) that accepts ConnectionString as given below -
public TestDatabaseConnection()
: base(ConfigurationManager.ConnectionStrings["TestDatabaseConnection"].ConnectionString)
{
}
This is breaking for two reasons -
ConfigurationManager.ConnectionStrings works only in .Net framework projects and throw runtime errors in the .Net Core project (for eg- ConfigurationManager.ConnectionStrings returns null).
I need to make changes to the above code to use the AppAuthentication nuget as mentioned in the MSDN docs here
So, what are the options available in order to make this work so that I could use the same nuget package for connecting to the database via EF 6 (database first) for both .net framework and .net core projects?
Is the only available is to convert to Code first and make the necessary changes as mentioned in the above MSDN link?

Cannot connect to Oracle Database with Entity Framework in ASP.NET MVC project

Context : I'm creating a web app (in ASP.NET MVC 4) that will offer access to an already existing Oracle database. I'll only need to be able to read data from that DB, no insert, or update, etc. I'm working in Visual Studio Express 2015 for Web.
I've searched a lot for answers to my problems, but to no avail.
My goal is to create models with Entity Framework Database first. I have added Entity Framework, Oracle.ManagedDataAccess, and Oracle.ManagedDataAccess.EntityFramework to my project with NuGet.
However, when I try to add an "ADO.NET Entity Data Model" to my Models, whether I select "EF Designer from database" or "Code First from database", I get the following:
What am I missing ?
I've found resources saying I need to install Oracle Developer Tools for Visual Studio. However, it is not supported in Visual Studio Express, and I cannot change my IDE.
I don't have Oracle client installed on this dev computer, but I sqldeveloper, and have no issue accessing the database with it. Do I NEED to install the Oracle client ? Aren't the dll installed throught NuGet enough ? I'm asking because I'm an intern, and installing any new piece of software requires validation, that takes quite a long time.
add connection your database to your project
Insert New Item an Empty Dataset
In that dataset insert TableAdapter from toolbox into your dataset.
window pops up for selecting tables (you can write sql for select a desired table)
after step 4. you have your entity.
I have the same bug and I fix like this:
You need instal:
Microsoft Visual Studio 2015 or later with .NET Framework 4.5 or later.
Oracle Database 12c or later.
Oracle Data Access Components (ODAC) 12c Release 3 (12.1.0.2.1) or later from OTN. The ODAC download includes Oracle Developer Tools for Visual Studio and ODP.NET
Files required for this tutorial.
Using NuGet to Install and Configure Oracle Data Provider for .NET tutorial.(install: Oracle.ManagedDataAccess.EntityFramework from Nuget).
refer: http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/2015/entityframework_linq_modelfirst/Entity%20Framework%20LINQ%20and%20Model%20First.html#overview

Unable to utilize Entity Framework after deployment

i m using publish option for my project using Entity framework.
the 'bin' of the published folder does contain the dll of project that has Entity framework but the features of my application (using EF) stop working when they Get / Insert Data using Entity Framework .
the error is as follows in my application's File log:
02/01/2015 10:25:36 AM|TraceError |Exception is :The specified store provider cannot be found in the configuration, or is not valid.| |<EOL>
Am i missing any thing? ... Please help.
This might be happening due to system architecture of processors (32 bit and 64 bit versions of dll).
Try the following steps.
Open Inetmgr (IIS).
Go to application pools.
Open advance properties of the application pool on which your application is running.
Set Enable 32 bit Applications (in general category) to True.
I think this will solve your issue.
If you are using an Oracle database, I assume you must have installed the ODP.NET components. Unless you are using a third party provider such as Devart, which offers direct access to Oracle with its DirectConnect feature, there has to be a middle layer that the developer installs which would translate EF to Oracle. (Even if you used a third party provider, then you must have installed that third party provider on your development environment). Long story short, your VM does not have the provider that your developer PC has. You need to find out if you are using ODP.NET or a third party provider on your development PC, (which, I guarantee you, does not come with any Visual Studio or framework installation, somebody has to install it separately), then install it on your VM

Using Microsoft Data Entity Framework with Microsoft MVC on Mono 2.4

I'm using Mono 2.4 on the Ubiquity web hosting service.
I created a simple MVC tutioal applciation, linked here, and verified that it worked using all Microsoft tools.
Next, the application was updated to point to a MySQL server database running on my Ubiquity host. The application works great on a Microsoft based machine.
Now, I am trying to deploy the application to the mono server on Ubiquity.
I set System.Web.MVC so it will CopyLocal=true.
I deployed the application to the mono server.
I get this error:
Description: Error parsing a resource required to service this request. Review your source file and modify it to fix this error.
Parser Error Message: Assembly System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 not found
Version information: Mono Version: 2.0.50727.1433; ASP.NET Version: 2.0.50727.1433
I am guessing the problem could be...
A) The Entity framework is not supported in mono. I need to use something other than the Microsoft Data Entity Framework.
B) The public key token for the mono version of System.Data.Entity is not "b77a5c561934e089".
C) There is something else going on.
I tried setting CopyLocal=true for the System.Entity.Data dll. Thus, the Microsoft version of the DLL deployed to my mono server. I have doubts that this is legal. At any rate, that only produced the following error:
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
Question
Can somebody confirm that it is possible to use the Microsoft Entity Framework on Mono? I am probably going to migrate away from the Microsoft Entity Framework, per this comment in the Microsoft MVC tutorial linked above..
"The ASP.NET MVC framework is not tied to the Microsoft Entity Framework. You can create >your database model classes by taking advantage of a variety of Object Relational Mapping >(OR/M) tools including LINQ to SQL, Subsonic, and NHibernate."
However, for the sake of consistency, I would like to use the Microsoft Entity Framework on mono if that is possible.
I can confirm that EntityFramework, Microsoft Chart Controls, and Microsoft Sync Framework do NOT work on mono on Linux, despite different claims from Microsoft and/or MS-employees.
That is because Sync Framwork uses pinvoke with a COM interop component, Microsoft Chart Controls has DirectorySeparator issues, and the EntityFramwork namespace is not ported to mono, yet.
So note that when Microsoft says "works with mono", they mean "with mono on Windows".
It is estimated that the EntityFramwork port will take 1 year at least, until it reaches alpha/beta stage, that is, if somebody would decide to do that.
But there are no official plans to port EntityFramework.
EntityFramwork might work/s on the windows version of mono, as long as you set localcopy to true.
I advise you to use nhibernate instead.
Update:
As of Mono 2.11.3, Microsoft has open sourced EntityFramework.
Hence, it is now a part of Mono's distribution.
This version comes with 349 commits, with around 514 file changes.
It includes 15553 insertions
and 3717 deletions.
Two down, one to go.
I guess this means:
BIG THANKS TO MICROSOFT, THAT 'S TERRIFIC ! ! !
You should set CopyLocal = true for the System.Data.Entity assembly as well. You noted that you copied System.Web.MVC local, but never mentioned that you copied System.Data.Entity locally. You might also need to copy local any of the assemblies that System.Data.Entity depends upon that are not part of Mono.
It looks like there is no support in Mono for EDF at the moment, but someone is working on it.

Resources