J'ai une procédure stockée GetMyTime. Il a un paramètre int PersonID, et retourne une donnée. Après l'ajouter à EDMX et l'importer en tant que fonction. Ensuite, j'essaie de se moquer d'écrire jusqu'à 4.0 un code comme ci-dessous:Comment écrire le code pour la fonction d'importation à partir d'une procédure stockée dans EF 3.5?
public ObjectResult<Nullable<global::System.DateTime>> GetMyTime(Nullable<global::System.Int32> PersonID)
{
ObjectParameter[] PersonIDParameters;
if (PersonID.HasValue)
{
PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID", PersonID)};
}
else
{
PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID",typeof(global::System.Int32))};
}
return base.ExecuteFunction<Nullable<global::System.DateTime>>("GetMyTime", PersonIDParameters); //this line cause error
}
Mais je reçois une erreur à la dernière ligne: « ? System.DateTime » Erreur 2 Le type ne peut pas être utilisé comme paramètre de type 'TElement' dans le type ou la méthode générique 'System.Data.Objects.ObjectContext.ExecuteFunction (string, params System.Data.Objects.ObjectParameter [])'. Il n'y a pas de conversion de boxe de 'System.DateTime?' à 'System.Data.Objects.DataClasses.IEntityWithChangeTracker'.
Comment le réparer?
Merci. Je travaille avec 3.5, pas 4.0 (VS 2008 sp1 sur XP). Est-il possible de modifier le code et de le faire fonctionner? – KentZhou
Dans 3.5, vous pouvez seulement mapper des procs qui renvoient des types d'entités. –