Mon scénario J'utilise Visual Studio 2010 avec Entity Framework 4.1 J'ai une base de données héritée avec de nombreuses tables et de nombreuses procédures stockées. J'écris un programme ASP.NET C# en utilisant MVC 3Mappage de procédures stockées sélectionnées dans le framework d'entité
J'ai adopté la conception 'base de données d'abord' en utilisant ADO.NET DbContext, j'ai donc un edmx avec tous les modèles et associations et propriétés de navigation bien mis en place. Je peux mapper l'insertion, mettre à jour, supprimer des procédures pour les modèles concernés. J'ai utilisé 'Importation de fonction' pour importer d'autres procédures stockées. Cependant, je n'arrive pas à trouver un moyen de mapper mes procédures Select pour sélectionner des actions (sélectionner par identifiant, sélectionner une liste, sélectionner par filtre, etc.). EF semble utiliser le chargement paresseux, ce que je veux arriver, c'est quand un objet récupère ses objets enfants, il utilise les procédures stockées déjà écrites. (Les procédures de sélection tiennent compte d'une « isDeleted » drapeau, et d'utiliser le «ORDER BY clause, entre autres)
Je vois de cet article http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx que LINQ to SQL permet le glisser-déposer de SPs, qui sonne, plus ou moins, exactement ce que je veux.
Je suis également tombé sur le terme DefiningQuery. http://msdn.microsoft.com/en-us/library/cc982038.aspx Est-ce ce que je veux? Je n'aime pas la note "Toutes les modifications apportées au modèle de stockage, y compris la définition des requêtes, seront remplacées lorsque vous exécuterez l'Assistant Modèle de mise à jour". En résumé, ce que je veux arriver, c'est quand un objet récupère ses objets enfants, il utilise mes procédures stockées. Puis-je atteindre mon objectif en utilisant Entity Framework? Ai-je manqué quelque chose d'évident?
Ou devrais-je essayer d'être très intelligent et modifier le modèle T4 db entité, de sorte que, par exemple, mon modèle généré d'adresse a cette propriété:
public virtual ICollection<AddressLine> AddressLines {
get{
DBWrapper _db = new DBWrapper();
return _db.GetAddressLines(AddressID);
}
set{};
}
où GetAddressLines est fonction personnalisée qui appelle une fonction importer et fait les conversions neccessary.
Merci. Cela confirme ce que je soupçonnais – Webbie4