Вам специально не нужны модели просмотра. Вы можете передать свои объекты EF непосредственно вашему представлению, и в простых случаях CRUD это нормально. По моему опыту, это никогда не просто ПРОСТО CRUD.
Мне обычно нужно получать данные из многих мест, которые не все содержатся в одном объекте. Например, я могу захотеть показать / скрыть данные в зависимости от роли человека в системе. Фу, вероятно, не знал бы этого. Другим примером будет форма с выпадающим списком. Вам нужно передать эту информацию куда-нибудь. Опять же, foo, вероятно, не знает, какие варианты должны быть.
Я бы создал модель представления для каждого класса, а затем использовал AutoMapper для сопоставления модели домена с вашей моделью представления.
Ваша модель вида будет выглядеть так:
public class FooView{
public BarView Bar { get; set;}
public ICollection<BazView> Bazes { get; set;}
}
public class BarView{
public int BarID { get; set; }
public BazView Baz { get; set; }
}
public class BazView {
public int BazID { get; set; }
}
Ваш метод действия будет иметь что-то вроде этого:
var foos = fooRepository.GetFoos();
var model = Mapper.Map<IEnumerable<Foo>,IEnumerable<FooView>>(myFoos);
return View(model);