В настоящее время я слежу за проектом, разрабатываемым csharpfritz (из Microsoft). Это называется «корвики». Некоторая форма "википедии" вроде проекта. Вот ссылка на репозиторий на github: CoreWiki Джеффа Фрица В предметном классе для комментариев он пишет следующее:
Я пытаюсь понять, почему он создал класс сущности 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
};
}
Он отделяет DAO (объекты доступа к данным) от объектов домена. СМОТРЕТЬ Отделение модели предметной области от модели персистентности
Может быть, но DAO - вводящий в заблуждение неправильный термин, видя общее определение DAO.





Это просто отображение кода для сопоставления модели предметной области с объектом доступа к данным и наоборот. Вы можете реализовать это разными способами, например, как показал автор, или с помощью явных операторов преобразования, или с помощью такого инструмента, как AutoMapper.
См., Например, Отделение модели предметной области от модели персистентности (первое обращение Google «зачем отделять модель домена от dao») для объяснения того, почему вам это нужно.
Спасибо, я так и подозревал. Мое замешательство возникло из-за того, что он также использовал AutoMapper даже после того, как он сделал эту карту домена для объекта доступа к данным.
Использование AutoMapper поверх этого, вероятно, является излишним, но оно действительно служит для абстрагирования реальных методов API (ToDomain / FromDomain). Возможно, это было намерением: сохранить логику сопоставления с доменом, но при этом сохранить независимость приложения в отношении всего шебанга.
Спрашивает их. Мы можем делиться только своим собственным мнением, которое «не по теме» на Stack Overflow.