Comment utiliser Entity Framework avec des procédures Stockées et des Poco
J'essaie ici d'utiliser Entity Framework avec des procédures Stockées et des POCO et 2 projets différents.
J'ai un projet DataAccess (pour ma edmx et DataContexts) et un projet BusinessEntities (pour ma POCOs).
DataAccess avoir une référence de BusinessEntities.
Dans ma DB j'ai un assez standard SP :
CREATE STORED PROCEDURE GetHeader
@id CHAR(35)
AS
BEGIN
SELECT ID, Name FROM mytable WHERE ID = @id
END
Le datacontext est :
public class DbContext : ObjectContext
{
public ObjectResult<BusinessEntities.GetHeaderResult> GetHeader(string id)
{
return base.ExecuteFunction<BusinessEntities.GetHeaderResult>("GetHeader", new ObjectParameter("id", id));
}
}
Si je n'y vais comme ça (l'EDMX a été mis à jour avec le PS, mais la fonction n'a pas été importé) j'ai cette erreur :
System.InvalidOperationException: The FunctionImport 'GetHeader' could not be found in the container 'DbEntities'.
Si je importer la fonction correctement, j'ai cette erreur :
Système.InvalidOperationException: Le paramètre de type 'BusinessEntites.GetHeaderResult " dans ExecuteFunction est incompatible avec le type 'DbModel.GetHeaderResult " retournée par la fonction.
Je suppose que c'est juste un simple réglage, qui manque ici, mais je n'arrive pas à l'attraper.
S'il vous plaît pas que le fichier EDMX a le bon réglage (CodeGenerationStrategy défini sur aucun, CustomTool est vide)
Vous devez vous connecter pour publier un commentaire.
Dans le premier cas, vous appelez à tort méthode sur le contexte.
ExecuteFunction
est seulement pour les importations de fonction. UtilisationExecuteStoreQuery
etSqlParameter
à la place. Dans le second cas, la fonction d'importation crée également un type complexe dans votre EDMX et EF attend, vous utiliserez ce type complexe comme un résultat de la fonction d'importation d'appel.