Cela peut être une réponse simple, mais je ne vois pas comment exécuter une procédure stockée avec EF CTP5.Entity Framework CTP5 - Comment appeler une procédure stockée?
Dans Entity Framework 4.0, nous avons fait ceci:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))
.
Qui est une méthode sur le ObjectContext
.
Mais DbContext
n'a pas cette méthode.
Comment appelons-nous un proc stocké? N'est-il pas pris en charge dans EF CTP5?
EDIT:
Je trouve this thread, États dans lesquels vous devez faire ceci:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
Cela soulève quelques préoccupations:
1) Vous appelez maintenant un stocké prodedure sur le défini, pas le contexte. Les procédures stockées doivent être disponibles à l'échelle du contexte et non liées à un ensemble d'entités particulier. Juste comme ils sont sous la "base de données" dans SQL Server, et non sous la "Table".
2) Qu'en est-il des types complexes? J'avais auparavant un type complexe renvoyé à partir d'une procédure stockée. Mais maintenant, il semble que vous devez mapper directement à une entité? Cela n'a aucun sens. J'ai beaucoup de procs stockés qui retournent un type non directement représenté par un ObjectSet/DBSet, que je ne peux pas voir comment je peux me garer. J'espère que quelqu'un peut éclaircir cela pour moi, parce que d'après ce que je comprends jusqu'à présent, je ne serai pas en mesure de mettre à niveau vers CTP5.
Ce qui est exactement ce que je mets dans ma modifier à ma question. – RPM1984
Cela répond à votre première préoccupation. Les sp sont disponibles dans l'ensemble du contexte. DbContext.Database est une référence à l'objet DbDatabase intégré. Ceci est différent de context.People.SqlQuery qui fonctionne sur le DbSet. –
Ahh votre droit, va essayer et revenir à vous. – RPM1984