Le type de Paramètre dans l'Exécution de la Fonction est incompatible avec le type retourné par la fonction
J'obtiens l'erreur suivante lorsque vous essayez d'importer une procédure stockée comme une fonction dans l'Entity Framework 5. J'ai récemment mis à jour les données de référence de la nouvelle version de EF.
Le paramètre de type 'les disques SSD.Les données.testy_Result " dans ExecuteFunction est
incompatible avec le type 'les disques SSD.Les données.testy_Result " remis par le
fonction.
Je ne peux pas le faire fonctionner pour n'importe quel stockées proc...voici mon test simple:
CREATE PROCEDURE testy
AS
BEGIN
select 'hello' as hello
END
GO
Elle rompt avec l'exception ci-dessus ici:
public virtual ObjectResult<testy_Result> testy()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<testy_Result>("testy");
}
Et il n'y a pas d'erreur quand j'ai mis le résultat dans une chaîne de scalaire dans la Fonction Éditer la fenêtre d'Importation dans le concepteur de modèle.
Je vais appeler la fonction comme ceci:
private Entities db = new Entities();
var x = db.testy();
Il est évident que je suis en manque ici? Il y a quelques edmx fichiers dans mon projet et les autres ont été créés avec une version plus ancienne de EF (et l'utilisation de ObjectContext).
Fonction De Mappage:
Plus De La Fonction De Mappages De Détail:
testy_Result classe:
public partial class testy_Result
{
public string hello { get; set; }
}
Vérifier les correspondances de votre fonction importée match sélectionné le type de retour. Dans l'Explorateur de modèles, cliquez-droit sur une fonction importée et choisir la Fonction de Mappage d'Importation'. Assurez-vous que les propriétés de la gauche correspondre les champs sur la droite
coulée dans le proc ne vous aide pas
la fonction mappages semble correct
Essayez ceci:
select cast('hello' as varchar(30)) as hello
OriginalL'auteur woggles | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
J'ai été aux prises avec ce même problème depuis quelques jours. Mon projet a également été mis à niveau à partir d'une version précédente de l'Entity Framework à 5.0. J'ai finalement compris que c'était dû à avoir un mélange d'ancien et de nouveau edmxs. Le retrait de l'ancien edmx a permis à la nouvelle de travailler, mais bien sûr ce n'est pas une solution viable. J'ai aussi été en mesure de l'obtenir pour travailler en modifiant la stratégie de génération de code pour la nouvelle (EF 5) edmx "Héritage ObjectContext". Si vous n'êtes pas familier, ce qui peut être trouvé par l'ouverture de l'edmx le schéma de droite de la souris et allez dans Propriétés. Je soupçonne tous edmxs dans le projet juste besoin d'être sur la même stratégie de génération de code, de sorte que vous pourriez probablement aussi changer vos anciennes à T4 au lieu de cela, bien qu'il faudrait probablement plus de travail.
OriginalL'auteur swirlingmass
Je ne sais pas si cela aide, mais voici ce que je fais généralement:
En supposant que vous avez un POCO de la classe de l'Entité Cadre:
L'appel suivant généralement le truc pour moi:
Aussi, juste au cas où, j'enveloppe mes appels à l'intérieur de la à l'aide de la clause:
Laissez-moi savoir si cela a fonctionné pour vous.
Acclamations.
OriginalL'auteur Roman