2010-11-07 4 views
4

Nouvel Entity Framework .Utilisant EF4. J'ai trouvé des articles et réussi à utiliser des procédures stockées pour retourner une liste d'entités.Comment utiliser une procédure stockée pour renvoyer une entité unique dans Entity Framework 4?

Mais vous ne pouvez pas voir/comprendre comment vous renvoyez une seule entité. Étant donné que j'ai une procédure stockée "GetCustomerById" qui renvoie un client unique Comment puis-je le mapper?

Utilisation du navigateur de modèle je clique droit sur la « Fonction d'importation » et je l'ai ajouté mon StoredProcedure cependant tout ce que je choisis ne semble pas renvoyer une « entité unique »

Est-ce que je manque à l'évidence?

Merci beaucoup pour tout lien ou suggestions

Répondre

2

Lorsque vous fonction d'importation vous devez sélectionner l'entité vos déclarations de SP dans le menu déroulant (à savoir Client). La capture est EF ne renvoie pas directement Client objet selon votre sélection, mais System.Data.Objects.ObjectResult qui implémente IEnumerable. Pour être plus précis, est ici le code généré pour votre fonction:

public ObjectResult<Customer> GetCustomerById(Nullable<global::System.Int32> Id) 

C'est parce que EF n'a aucune idée si votre SP retourne un enregistrement unique ou une liste d'entre eux il enveloppe le résultat à l'intérieur ObjectResult. Vous pouvez énumérer ceci pour obtenir votre entité client comme n'importe quel autre objet IEnumerable. Par exemple:

Customer myCustomer = context.GetCustomerById(1).First(); 
+0

Merci pour votre reply.So si vous le mappage à une seule entité ou une liste de entities.It créerez un IEnumerable et son à moi pour obtenir FirstOrDefault.mmmm que faire de sorte sense.As Je travaille autour j'ai créé un type complexe que je pense est faux. – user9969

+0

Pas de problème et oui, à partir de .NET 4.0, EF est capable de matérialiser le résultat du SP dans votre entité, il l'enveloppe simplement dans ObjectResult comme je l'ai dit. Lorsque vous effectuez une importation de fonction, veillez à sélectionner votre entité exacte et non un type complexe. –

Questions connexes