Attualmente sto seguendo un progetto sviluppato da csharpfritz (di microsoft). Si chiama "corewiki". Qualche forma di progetto simile a "wikipedia". Ecco il link al repository su github: CoreWiki di Jeff Fritz Nella classe dominio per i commenti scrive questo:
Sto cercando di capire il motivo per cui ha creato un'entità di classe e la classe FromDomain ToDomain:
// Main model
public class CommentDAO
{
public int Id { get; set; }
public int ArticleId { get; set; }
public virtual ArticleDAO Article { get; set; }
public string DisplayName { get; set; }
public string Email { get; set; }
[NotMapped]
public Instant Submitted { get; set; }
public string Content { get; set; }
}
public static CommentDAO FromDomain(Core.Domain.Comment comment)
{
return new CommentDAO
{
AuthorId = comment.AuthorId,
Content = comment.Content,
DisplayName = comment.DisplayName,
Email = comment.Email,
Id = comment.Id,
ArticleId = comment.ArticleId,
Submitted = comment.Submitted
};
}
public Core.Domain.Comment ToDomain()
{
return new Core.Domain.Comment
{
AuthorId = AuthorId,
Content = Content,
DisplayName = DisplayName,
Email = Email,
Id = Id,
ArticleId = this.Article.Id,
Submitted = Submitted
};
}
Questo è semplicemente il codice di mappatura per mappare un modello di dominio a un oggetto di accesso ai dati e viceversa. Puoi implementarlo in molti modi, come l'autore ha mostrato, o utilizzando operatori di conversione espliciti o utilizzando uno strumento come AutoMapper.
Vedi ad esempio Avere il modello di dominio separato dal modello di persistenza (il primo hit di Google per "perché separare il modello di dominio da dao") per una spiegazione del perché lo si vorrebbe.