2008-09-18 8 views
1

J'ai déjà un modèle d'entité dans une DLL séparée qui contient divers objets que j'ai besoin d'utiliser. Je ne veux pas vraiment créer ou dupliquer des entités en utilisant le concepteur EF. Au lieu de cela, je voudrais le configurer de sorte que lorsque j'appelle une procédure stockée, il va mapper certaines colonnes à des propriétés spécifiques.Entity Framework - Pouvez-vous mapper le type de résultat d'une procédure stockée importée sur un type d'entité personnalisé?

Je sais que vous pouvez faire quelque chose de très proche en utilisant un DataContext personnalisé dans LinqToSql. Le problème est que vous ne pouvez pas affecter de colonnes à des types de propriétés complexes. Par exemple: il se peut que des colonnes contenant l'adresse d'un utilisateur soient renvoyées. Je voudrais stocker les détails d'adresse pour l'utilisateur dans un objet Adresse qui est une propriété d'un objet Utilisateur. Ainsi, Colonne STREET doit correspondre à User.Address.Street.

Des idées?

+0

J'espère que ce lien m'aidera. http://blogs.msdn.com/efdesign/archive/2008/07/18/using-stored-procedures-to-get-load-structured-data.aspx Je suis surpris que personne d'autre n'ait voulu le faire .. – Vyrotek

Répondre

1

Il existe plusieurs options ici.

  1. Vous pouvez créer un "type complexe" et l'associer au résultat de la procédure. Cependant, vous devez le faire dans votre EDMX; ce n'est pas pris en charge par le concepteur. Lire this article pour plus de détails. Notez que les types complexes ne sont pas des types d'entité en soi, cela peut ne pas correspondre à vos besoins. Mais vous pouvez trouver des exemples pour stored procs which use "Address".

  2. Vous pouvez modifier la visibilité de votre procédure en private, puis en écrire une interface publique dans tout fichier de classe partielle écrit manuellement qui effectue le mappage souhaité. Ou juste surcharger la procédure.

Questions connexes