Пользователи нашей системы могут предоставить не подтвержденные контактные данные. Например:
- Имя: ноль
- Фамилия: 231
- номер телефона: не уверен
- и т.д.
Эти данные хранятся в таблице PendingContacts.
У меня есть еще одна таблица - ApprovedContacts. Эта таблица имеет множество ограничений для улучшения согласованности и целостности. Эта таблица не должна содержать грязных или неполных данных.
Мне нужен процесс для перемещения данных из одной таблицы в другую. Структура обеих таблиц практически идентична, однако одна таблица имеет ограничения, а другая - нет.
У меня есть два состояния: «Ожидание» и «Утверждено», интуитивное чувство подсказывает мне, что я должен использовать образец состояния подробности здесь . Теоретически это должно позволить мне изменить состояние контакта с Ожидание на Утверждено, в зависимости от того, был ли контакт успешно подтвержден. Проблема в том, что я не понимаю, как это будет работать.
Я иду в правильном направлении или я должен смотреть на что-то совершенно другое?
Уровень представления находится в MVC 3, поэтому я имею представление моделей для ожидающих контактов и утвержденных контактов, а также моделей доменов для ожидающих контактов и утвержденных контактов. Мои модели представлений, как правило, представляют собой DTO с некоторыми процедурами проверки, но теперь мои модели представлений также представляют состояние. Это кажется неправильным.
Например, все контакты должны иметь состояние, и они могут быть сохранены и удалены, поэтому мне нужен интерфейс для этого:
public interface IContactViewModelState
{
void Save(ContactViewModel item);
}
Затем я добавляю реализацию для сохранения ожидающих контактов в таблицу PendingContacts:
public class PendingContactViewModelState: IContactViewModelState
{
public void Save(ContactViewModel item)
{
// Save to the pending contacts table
// I don't like this as my view model now references data access layer
}
}