web-dev-qa-db-fra.com

Connexion Entity Framework 6 (5) à Oracle

J'essaie d'écrire une bibliothèque d'accès aux données pour notre suite d'applications qui utilise Oracle dans .net. Nous utilisons actuellement NHibernate et songeons à migrer car cela ne semble pas être pris en charge très bien.

Je travaille avec Visual Studio 2013 et nous avons déjà construit notre base de données Oracle. Nous n'avons pas écrit pour le mettre à jour (c'est le domaine des gars de la base de données). Cela ne fera donc pas partie des calculs de notre côté. 

Le client sur le serveur est en 32 bits, nous allons donc nous en tenir à cela pour le moment. Il est déjà inscrit dans le document GAC, et il n'est pas nécessaire de le changer. Nous avons donc le client 32 bits sur nos boîtes de développement. 

EntityFramework 6.1.0 est installé dans mon projet via nuget. J'ai ODAC 1.112.3.20 installé dans mon projet. La version 32 bits de l'application. Le pilote ODP.net.x86 est également installé (également via nuget). 

Le problème est que chaque fois que j'essaie de créer une connexion à une base de données ADO.net, le fournisseur Oracle n'est jamais une option. Qu'est-ce que je rate? De quoi ai-je besoin pour que cela fonctionne?

Une fois, j'ai lu un forum Oracle qui disait que je devais configurer Entity Framework sur 5.0 et non sur 6.0. Ce qui va bien, mais comment je fais ça?

9
SoftwareSavant

Le support EF 6 est maintenant fourni par ODAC 12c Release 3 Beta: 

De la lettre d'information .Net Developer (l'emphase mienne): 

Nouveau téléchargement: Version bêta de la version 3 de la norme ODAC 12c La nouvelle version bêta de l’ODAC comprend Entity Framework 6 , code d’abord, migrations de code d’abord, .NET Framework 4.5.2, géré par ODP.NET Base de données XML et prise en charge de la transaction distribuée ODP.NET gérée sans Oracle.ManagedDataAccessDTC.dll.

9
Robert H

Je sais que ça commence à devenir un peu vieux, mais ceci est pour répondre à la dernière partie de votre question (comment installer EFv5). (Instructions écrites pour VisualStudio 2013) avec votre solution ouverte, cliquez sur TOOLS-> NuGet Package Manager-> Package Manager Console. Entrez les informations suivantes:

Install-Package EntityFramework -Version 5.0.0

Modifier

C’est un bon moment depuis que j’ai installé ma machine, mais je pense que c’est ce que je devais faire. Espérons que cela aide.

Installer:

  1. Installez Oracle Instant Client (ou quoi que vous fassiez pour une maison Oracle)
  2. Installez ODTwithODAC121012 (si vous utilisez Google, cela devrait apparaître)
  3. Assurez-vous que votre tnsnames.ora est au bon endroit pour votre maison Oracle

Configuration d'une nouvelle solution Visual Studio:

  1. Nouvelle solution (pour moi de type Application Web ASP.NET)
  2. Exécuter la commande comme dans la réponse d'origine
  3. Ajouter un nouveau projet de type Class Library (for Model/Entities)
  4. Dans un nouveau projet, ajoutez un nouvel élément de type ADO.NET Entity Data Model.
  5. Dans l'assistant de modèle de données d'entité:
    1. EF Designer à partir de la base de données (si vous utilisez une base de données existante)
    2. Nouvelle connexion
    3. Dans Data Source, il existe (espérons-le) une option de base de données Oracle
    4. Et en dessous de cela, dans le fournisseur de données, j'ai choisi le pilote géré ODP.NET
    5. Entrez utilisateur/passe, sélectionnez la source de données et nommez la connexion

Modifier 2

Oh, j'ai oublié une chose, je ne sais pas si c'est important. Vous devrez peut-être ajouter une référence dans ce projet de modèle au pilote Oracle. Faites un clic droit sur projet -> Ajouter -> Référence -> Assemblages -> Recherchez "Oracle". Espérons qu'il existe une entrée pour Oracle.ManagedDataAccess (ma version était 4.121.1.0).

Quelques coups de gueule:

  1. Je ne pense pas que le processus devrait être si difficile
  2. Je ne sais pas pourquoi cela leur prend si longtemps pour mettre à jour non plus. http://www.devart.com/ semble bien se tenir au courant des nouvelles modifications apportées à Oracle/Visual Studio (ils facturent, mais Oracle aussi)
  3. La partie conspiration de mon cerveau dit qu'Oracle n'a aucun intérêt à vous faciliter la tâche. ne pas utilisent leurs produits et ils ont donc mis non effort dedans
  4. Leurs correspondances de numéros par défaut peuvent vraiment vous gâcher. Par exemple, si votre base de données Oracle contient des champs de type NUMBER(10), elle sera mappée en tant qu'int 32 bits, lorsque tous les nombres à 10 chiffres ne correspondent pas :(
  5. Pour plus d'informations sur cette opération de mappage (le lien montre comment remplacer ce problème 32 bits), voir: http://docs.Oracle.com/cd/E56485_01/win.121/e55744/ InstallConfig.htm # ODPNT8167
8
jordan.roskelley

EF 6 n'est pas encore pris en charge par ODP.NET. Voir les notes de version (README) pour plus d'informations. EF6 sera pris en charge sous peu.

Edit: EF6 est maintenant supporté.

4
Christian Shay

Désolé, j'ai manqué une partie de votre question.

Si vous utilisez Visual Studio 2013, vous devez télécharger Oracle Developer Tools pour Visual Studio version 12.1.0.1.2 ou ultérieure. Avec toute version plus ancienne, l'intégration avec VS 2013 ne sera pas possible.

Voici l'emplacement de téléchargement: http://www.Oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

EF 6.0 n'est pas encore pris en charge, mais vous pouvez utiliser les fournisseurs EF5 dans VS 2013. Mon autre réponse n'est donc pas vraiment pertinente.

1
Christian Shay

Entity Framework 6 Code d'abord

ODAC 12c R3 est la première version d'ODP.NET à certifier avec Entity Framework (EF) 6 et EF Code First. EF Code First est un modèle de développement Populaire pour le mappage objet-relationnel .NET. Les développeurs Définissent le modèle de domaine d'application à l'aide du code source, plutôt que Avec un concepteur ou un fichier de configuration basé sur XML. Les classes d'un modèle EF Code First Sont définies dans le code via les objets Plain Old CLR (POCO).

...

Ces fonctionnalités sont toutes disponibles à la fois dans ODP.NET, géré et non géré.

http://cshay.blogspot.com/2014/09/odac-12c-release-3-beta-now-available.html

0
Tom Halladay