2016-02-01 1 views
2

Je viens de migrer vers EF6 et voici ce qui se passe. J'ai fait tout ce qui est suggéré dans n'importe quel post sur stackoverflow ou oracle donc j'ai décidé d'ouvrir une autre question.Entity Framework avec EF6 Runtime Exception 'Le mappage des membres spécifié n'est pas valide'

1) Mon modèle est dans un assemblage séparé. 2) J'ai fait tout ce que je devais faire pour régénérer mon modèle (j'ai supprimé les fichiers .tt et actualisé mon modèle de DB). 3) Après cela, le nouvel EF semble être trop intelligent et a décidé de créer tous mes champs de nombre (1) en tant que booléen. 4) cela provoquerait une énorme refonte pour moi. 5) J'ai décidé d'ajouter les entrées suivantes à web.config dans la solution où j'ai le modèle.

<oracle.dataaccess.client> 
    <settings> 
     <add name="int16" value="edmmapping number(1,0)" /> 
     <add name="int16" value="edmmapping number(3,0)" /> 
     <add name="int16" value="edmmapping number(4,0)" /> 
     <add name="int32" value="edmmapping number(9,0)" /> 
     <add name="int64" value="edmmapping number(18,0)" /> 
    </settings> 
    </oracle.dataaccess.client> 

J'ai rafraîchi mon modèle et tout allait bien. 6) Lorsque j'exécute l'application qui fait référence à mon assemblage de modèle, j'obtiens l'exception suivante lors de l'ouverture de ma connexion à la base de données Oracle.

error 2019: Member Mapping specified is not valid. The type 'Edm.Int16[Nullable=True,DefaultValue=]' of member 'TRACKATTENDANCEFLAG' in type 'Model.FACILITY' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' of member 'TRACKATTENDANCEFLAG' in type 'Model.Store.FACILITY'. 

7) J'ai ajouté les mêmes entrées dans l'application qui utilise le modèle mais il n'a pas d'importance, je continue à faire la même exception.

8) Je n'utilise pas le lecteur géré. J'utilise Oracle.DataAccess.Client.

9) Version Oracle.DataAccess.Client 2.121.2.0 Oracle.DataAccess.EntityFramework Version 6.121.2.0

Quelqu'un at-il des idées? J'ai passé plus de 20 heures à essayer de comprendre. J'ai essayé toutes les combinaisons possibles. Il est tellement mauvais qu'Oracle me laisse générer mon modèle mais a échoué pendant l'exécution contre la base de données exacte.

J'apprécie toute aide

Répondre

3

eu le même problème et a essayé toutes les solutions que j'ai trouvé. Le seul qui fonctionnait était l'ajout du code suivant à tous mes fichiers web.config et app.config sous le <connectionStrings></connectionStrings>.

<oracle.manageddataaccess.client> 
<version number="*"> 
    <edmMappings> 
    <edmNumberMapping> 
     <add NETType="int16" MinPrecision="1" MaxPrecision="4" DBType="Number"/> 
    </edmNumberMapping> 
    </edmMappings> 
</version> 

Ma configuration est:

  • EF6
  • Oracle ManagedDataAccess client 4.121.2.0