Je ne suis pas sûr que cela soit possible avec Entity Framework, mais je duplique trop d'objets de remplissage de code.LINQ w/Entity Framework - Objets de remplissage
Actuellement mes méthodes font quelque chose comme:
return (from s in context.some_table
join u in context.user_table on s.user_id equals u.id
where s.id == someId
select new MyObject()
{
TableColumn = s.some_column,
User = new MyUser()
{
Username = u.username,
Id = u.id,
}
}.FirstOrDefault();
Je viens tapés comme un exemple. J'ai beaucoup de questions où j'inclus des informations sur l'utilisateur (plus que juste dans cet exemple). Donc, dans toutes mes requêtes, je mets le même morceau de code. Si j'ai 100 méthodes avec ce morceau de code et que je veux ajouter une autre colonne qui est retournée alors je dois mettre à jour 100 méthodes. Douleur dans les fesses.
Ce que je voudrais faire est de remplir l'objet Utilisateur par une méthode réutilisable. De cette façon, l'ajout/la suppression de colonnes renvoyées ne doit être modifié qu'à un seul endroit. Comme:
return (from s in context.some_table
join u in context.user_table on s.user_id equals u.id
where s.id = someId
select new MyObject()
{
TableColumn = s.some_column,
User = FillUser(u)
}.FirstOrDefault();
FillUser serait la méthode. Bien sûr, cela ne fonctionne pas avec Entity Framework.
Y a-t-il quelque chose que je puisse faire du tout? Je pourrais bien sûr retourner toute la table des utilisateurs mais c'est beaucoup plus d'infos que j'en ai besoin donc c'est un gâchis. J'utilise. NET 4.0 si cela aide.
Si la création d'objets avec un sous-ensemble de données à partir de tables au lieu de renvoyer toutes les données à partir d'eux en abuse alors Microsoft devrait vraiment mettre à jour leurs exemples. – GregInWI2
Pourquoi devraient-ils? La projection est OK si vous n'avez pas besoin de la répéter 100 fois. Si vous avez besoin de l'utiliser 100 fois, c'est un exemple pour 'QueryView' et c'est la raison pour laquelle' QueryView' existe - pour avoir la possibilité de réutilisation. –
@ GregInWI2: vous avez vraiment shuold utiliser le mappage de table. – Naor