MVC Viewmodel et Entity Framework requêtes

Je suis nouveau à la fois MVC et Entity Framework et j'ai une question sur le droit/le moyen privilégié pour ce faire.

J'ai une sorte d'été à la suite de la Nerd Dîner application MVC pour la façon dont je suis en train d'écrire cette application. J'ai une page qui contient des données à partir de différents endroits. Il montre les détails qui viennent d'un peu de tables différentes et dispose également d'une liste déroulante à partir d'une table de recherche.

J'ai créé une classe ViewModel qui contient toutes ces informations:

class DetailsViewModel {
    public List<Foo> DropdownListData { get; set; }

    //comes from table 1
    public string Property1 { get; set; } 
    public string Property2 { get; set; }

    public Bar SomeBarObject { get; set; } //comes from table 2
}

Dans le Nerd Dîner code, leur exemple est un peu trop simpliste. Le DinnerFormViewModel prend en une seule entité: le Dîner. Basé sur le Dîner, il crée un SelectList pour le pays, basé sur le dîners emplacement.

En raison de la simplicité, leur code d'accès aux données est également assez simple. Il a un simple DinnerRepository avec une méthode appelée GetDinner(). Dans ses méthodes d'action, il peut faire des choses simples comme:

Dinner dinner = new Dinner();

//return the view model
return View(new DinnerFormViewModel(dinner));

OU

Dinner dinner = repository.GetDinner(id);

return View(new DinnerFormViewModel(dinner));

Ma requête est beaucoup plus complexe que cela, en tirant à partir de plusieurs tables...la création d'un type anonyme:

var query = from a in ctx.Table1
            where a.Id == id
            select new { a.Property1, a.Property2, a.Foo, a.Bar };

Ma question est comme suit:

Que dois-je référentiel de la classe ressembler? Si le référentiel de retour en classe le ViewModel lui-même? Qui ne semble pas être la bonne façon de faire les choses, depuis le ViewModel genre de implique qu'il est utilisé dans une vue. Depuis ma requête retourne un objet anonyme, comment puis-je retourner que, de mon référentiel afin que je puisse construire le ViewModel dans mes actions de contrôleur?

  • +1 pour la question, je me demandais moi-même. Ont seulement joué avec MVC; n'ai pas eu l'occasion de les utiliser dans n'importe quel réel, la capacité de l'entreprise encore. Et malheureusement, vous ne pouvez pas retourner anonyme types de méthodes. (stackoverflow.com/questions/2400508/...)
InformationsquelleAutor Dismissile | 2011-02-22