2010-06-15 6 views
3

Je suis aux prises avec la compréhension des objets Entity Framework et POCO. Voici ce que j'essaie d'accomplir.Entity Framework Objets POCO

1) Séparez la couche d'accès à la liste de la couche métier en demandant à ma couche de gestion d'utiliser une interface avec ma couche d'accès au client. Peut-être utiliser Unity pour créer mon contexte.

2) Utilisez Entity Framework dans ma DAL.

J'ai un modèle de domaine avec des objets qui résident dans ma couche de gestion. J'ai aussi une base de données complète de tables qui ne représente pas vraiment mon modèle de domaine. Je configure Entity Framework et génère des objets POCO en utilisant l'extension ADO.NET POCO Generator. Cela m'a donné un objet pour chaque table dans ma base de données. Maintenant, je veux être en mesure de dire context.GetAll<User>(); et lui faire retourner une liste de mes objets utilisateur. L'objet Utilisateur est dans ma couche de gestion. Est-ce possible?

Est-ce que cela a du sens ou est-ce que je suis complètement éteint et devrait recommencer? Je devine que je dois utiliser le modèle de dépôt pour y parvenir, mais je ne suis pas sûr.

Quelqu'un peut-il aider?

+0

Vérifiez ma réponse (dans le lien à la fin) pour voir si elle aide à l'aspect DAL/BLL. Votre contexte doit avoir une forme plurielle d'Utilisateur (par exemple Utilisateurs) que vous pouvez utiliser pour les charger paresseux. http://stackoverflow.com/questions/2850371/asp-net-layered-app-share-entity-data-model-amongst-layers/2850402#2850402 –

+0

J'ai lu votre message et je pense que je commence à comprendre. ..Les objets POCO créés par EF sont destinés à être transmis? La partie que je ne comprends pas est si j'utilise un modèle de domaine dans ma couche de gestion comment puis-je utiliser des objets POCO lorsqu'ils représentent des tables dans ma base de données? –

Répondre

4
0

En général, avec EF, la façon d'obtenir tous les objets dans votre contexte comme List<T> serait quelque chose comme:

context.Users.ToList(); 

Mais depuis Users serait un IEnumerable dans votre contexte de toute façon, vous pouvez faire pratiquement tout type d'itération ou l'interrogation directement sur context.Users

+0

Ok, mais comment obtenir mon EF ObjectContext à savoir sur mon objet domaine utilisateur, puis l'obtenir pour remplir mon objet utilisateur à partir du POCO qu'il a créé à partir de la table de base de données? Il a déjà créé un POCO appelé TBL_USER, mais je ne veux pas utiliser cet objet, je veux pouvoir utiliser mon objet User dans ma couche de gestion. –

+0

@Dan, il peut y avoir des cadres qui font cela pour vous, mais si oui, je n'en connais pas. Basé sur cela, je créerais une méthode sur mon type d'utilisateur qui prend un objet de TBL_USER et convertit en votre type BL. Remplissez une liste avec vos objets créés. Je ne suis pas sûr, cependant, c'est la meilleure réponse. Si vous êtes déjà en train de passer d'un DB à un objet Entity POCO, vous voudrez peut-être examiner votre espace-problème pour être sûr que vous avez réellement besoin d'un objet métier supplémentaire ... – AllenG

+0

Je ne suis pas sûr d'avoir besoin de mon activité supplémentaire objets maintenant. Mais j'ai toujours le problème d'EF créant les objets POCO et ils reflètent mes tables dans ma base de données, je veux que mes objets métier reflètent mon modèle de domaine. Sais ce que je veux dire?Peut-être que je dois regarder de plus près et voir exactement comment les POCO sont créés et voir s'ils fonctionneraient. –

Questions connexes