Après avoir importé une procédure stockée dans mon modèle de données, le projet a cessé de compiler.
Cela continue à me donner des erreurs:
The best overloaded method match for
'System.Data.Entity.Core.Objects.ObjectContext.ExecuteFunction<TicketDataModel.sp_get_orphanjobgrades1_Result>
(string, params System.Data.Entity.Core.Objects.ObjectParameter[])'
has some invalid arguments C:\Users\nikolaev\Documents\MySoft\TicketManager-06 11 2013\TicketManager\TicketDataModel\TicketDataModel\TicketEntities.Context.cs 105 20 TicketDataModel
et
`Argument 3: cannot convert from 'System.Data.Objects.ObjectParameter' to
'System.Data.Entity.Core.Objects.ObjectParameter'
C:\Users\nikolaev\Documents\MySoft\TicketManager-06 11 2013\TicketManager\TicketDataModel\TicketDataModel\TicketEntities.Context.cs 79 143 TicketDataModel`
Le code dans context.cs
est le suivant:
public virtual ObjectResult<sp_get_orphanjobgrades1_Result> sp_get_orphanjobgrades1(Nullable<System.DateTime> start_date, Nullable<System.DateTime> end_date)
{
var start_dateParameter = start_date.HasValue ?
new ObjectParameter("start_date", start_date) :
new ObjectParameter("start_date", typeof(System.DateTime));
var end_dateParameter = end_date.HasValue ?
new ObjectParameter("end_date", end_date) :
new ObjectParameter("end_date", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_get_orphanjobgrades1_Result>("sp_get_orphanjobgrades1", start_dateParameter, end_dateParameter);
}
J'ai lu que c'était peut-être à cause de EF 6 et qu'il fallait télécharger VS 2012 Update 1 et/ou EF 6 Tools pour VS 2012. J'ai téléchargé les outils et j'ai déjà la mise à jour 4 installée, mais cela ne change rien.
Pourquoi est-ce?
Le problème est que votre modèle ne sait rien des nouveaux paramètres. Je suppose que cela se produit lorsque votre modèle utilise EntityFramework (EF) version inférieure (5.0 par exemple), mais dans le code, vous essayez d'utiliser EF 6.0.
Vous devez donc soit rétrograder votre code à EF 5.0, soit mettre à niveau votre modèle à 6.0.
Modèle de mise à niveau:
Ou vous pouvez rétrograder la version EF utilisée dans votre code. Pour cela, vous devriez faire la même chose dans les 3 premières étapes, mais dans la quatrième, remplacez "-version 6.0.0" par "-version 5.0.0" . La 5ème étape n'est pas nécessaire pour cela.
Pour résoudre ce problème:
Si la version est en conflit, installez le package pour la version respective de EF
.
Si la version est identique, modifiez l'espace de nom ci-dessus en System.Data.Entity.Core.Objects
Vous pouvez télécharger de nouvelles versions dans msdn.
Je veux juste ajouter que cela m'est arrivé après le démarrage d'un tout nouveau projet. Le problème était que j'avais créé un nouveau projet, puis procédé à la mise à jour de Entity Framework, ASP.Net MVC et d'autres packages via le gestionnaire de packages NuGet. Ainsi, le code généré pour mon projet ne correspond plus à ce que j'avais installé.
La solution la plus rapide pour moi consistait simplement à créer un nouveau projet car je n'avais encore effectué aucun travail réel. J'espère que cela aide quelqu'un d'autre là-bas.
Ma situation était un nouveau projet et je suis allé à Nuget avec Install-Package EntityFramework qui a installé la version 6.0, mais apparemment mon projet était déjà configuré avec une version antérieure? Vous ne savez pas comment, peut-être le projet par défaut de MVC 4.0 ...
Donc, je devais faire un EntityFramework Unforce-Package -force suivi par Install-Package EntityFramework -version 5.0.0
Tout a fonctionné après ça.