2012-06-20 2 views
0

Я создаю функцию проверки производителя, где создатель создает запись и проверяется с помощью проверки. Создание записи не произойдет, пока контролер не одобрит ее. Если контролер отклоняет его, его следует отменить.Функция Maker-Checker для asp.net

Идея, которую я знаю, создает временную таблицу записей, которая будет содержать записи, которые будут созданы до тех пор, пока контролер не одобрит ее. Но этот метод будет иметь 2X количество таблиц, которые будут созданы для покрытия всех функциональных возможностей.

Каковы наилучшие методы для достижения этой цели? Это что-то, что можно сделать с помощью рабочего потока Windows.? (WWF)

+0

Почему бы вам не сделать одну таблицу с столбцом VerifierID, которая останется пустой, пока верификатор не проверит ее. –

+0

@ShoaibShaikh Но если запись изменена, и чекер отвергает ее. В этом случае запись должна быть отброшена, и это невозможно, если мы поддерживаем одну таблицу. –

ответ

2

Просто добавьте еще несколько столбцов в свой дБ.

  • Статус: Текущее состояние записи (Ожидание утверждения, Approved, Отклонено и др.)
  • Maker: Имя пользователя или идентификатор
  • Checker: Имя пользователя или идентификатор
  • Checker Одобрение/Отклонение времени

В качестве альтернативы, если у вас есть много таблиц, подобных этому, необходимо создать рабочий столчик/checker, вы можете добавить другую таблицу и указать всю другую запись в эту таблицу.

фонд рабочего процесса Windows, также может работать для вас, но я persnoally найти его трудно использовать

Если вы хотите изменения, для recored вам также нужно больше столбцов. Например, номер версии и IsLastRevision.

Я не знаю, что вы используете для доступа к файлам db и modifiying. Если вы используете OR/M, вы можете переопределить Update и делать изменения во всех сэйверах. Для примера

void Update(Entity e) 
{ 
Entity n = new Entity(); 
    // Create a copy of e (With AutoMapper for example or manually) 
e.Current = true; 
e.RevisionNumber += 1; 
Update(e); 
Insert(n); 

} 
+0

Но если запись будет изменена, и контролер отклонит ее. В этом случае запись должна быть отброшена, и это невозможно, если мы поддерживаем одну таблицу. –

+0

@ Chandu-Indyaah Если запись изменилась? Приложение должно гарантировать, что контролер проверяет, какой производитель отправляет для его утверждения. В этом случае можно сказать: «Как насчет дба, кто может изменить запись»? – adt

1

В этом случае у вас будет два варианта:

Создание двух идентичных таблиц и использовать одну таблицу для утвержденных данных и один для запрашиваемых данных.

ИЛИ

Вы можете создать две строки для пользователя с TypeID (запрашиваемых/утвержденным). в этом случае пользователь создаст запрос с типомID = запрошенным, если одобренный одобренный запрос будет просто отменять текущую одобренную запись новым, иначе просто отметьте запрошенную строку с отклоненным статусом.

Смежные вопросы