У меня следующая настройка: MVC > Services > Repositories. Теперь я хочу разрешить пользователям добавлять заметку к документу. Только пользователи, связанные с документом (либо как владельцы, либо как рецензенты) могут добавлять заметки, поэтому в моем NoteService я делаю следующее, чтобы убедиться, что пользователь имеет разрешение на выбранный документ:
public Note GetNewNote(int documentID)
{
if (!userHasAccess(Thread.CurrentPrincipal.Identity.Name))
throw new BusinessLogicException();
// Other stuff here...
}
Мой вопрос в том, где я должен определить метод userHasAccess? Это не имеет смысла в NoteService, так как он проверяет документ. Я мог бы определить его в DocumentService, но тогда NoteService будет нуждаться в доступе к нему, что, кажется, увеличит количество связей.
На мой взгляд, более разумно определить это в самом Document POCO и затем вызвать document.userHasAccess(...). Будет ли это хорошей практикой или POCO домена должен быть ограничен простыми свойствами? Меня беспокоит, что это действительно часть валидации и что, помещая метод в POCO, я разделяю валидацию между службой и POCO.
Я пытаюсь добиться того, чтобы мое приложение было легко поддерживать и тестировать. Любые предложения о том, как я должен решить эту проблему, будут очень признательны!