ViewModels in MVC / MVVM / Trennung von Layern - Best Practices?

Ich bin ziemlich neu in der Verwendung von ViewModels und frage mich, ob ein ViewModel Instanzen von Domänenmodellen als Eigenschaften enthalten darf oder ob die Eigenschaften dieser Domänenmodelle Eigenschaften des ViewModel selbst sein sollten. Zum Beispiel, wenn ich eine Klasse habeAlbum.cs

public class Album
{
    public int AlbumId { get; set; }
    public string Title { get; set; }
    public string Price { get; set; }
    public virtual Genre Genre { get; set; }
    public virtual Artist Artist { get; set; }
}

Hätte das ViewModel normalerweise eine Instanz vonAlbum.cs Klasse, oder hätten Sie das ViewModel Eigenschaften für jede derAlbum.cs Klasse 'Eigenschaften.

public class AlbumViewModel
{
    public Album Album { get; set; }
    public IEnumerable<SelectListItem> Genres { get; set; }
    public IEnumerable<SelectListItem> Artists { get; set; }
    public int Rating { get; set; }
    // other properties specific to the View
}


public class AlbumViewModel
{
    public int AlbumId { get; set; }
    public string Title { get; set; }
    public string Price { get; set; }
    public IEnumerable<SelectListItem> Genres { get; set; }
    public IEnumerable<SelectListItem> Artists { get; set; }
    public int Rating { get; set; }
    // other properties specific to the View
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage