Как решить, что происходит, а что не сохраняется в рабочем процессе - PullRequest
3 голосов
/ 09 июня 2011

У меня вопрос по поводу сохранения состояний значений в постоянном рабочем процессе. У меня есть два свойства внутри одного из моих классов расширения:

    public int ApprovalCount
    {
        get;
        set;
    }

    public bool ApprovedByAllInitialApprovers
    {
        get;
        set;
    }

Эти свойства устанавливаются во время некоторых вычислений, выполняемых по другому методу.

Моя проблема в том, что когда рабочий процесс бездействует и сохраняется, состояние этих значений также сохраняется в базе данных, поэтому, если я снова вызываю метод в своем классе расширений, я собираю значения, когда я их покидаю; Я понимаю, что такое поведение, очевидно, является достаточно фундаментальным для того, как рабочие процессы работают постоянно, и в 90% случаев я хочу, чтобы значения запоминались и сохранялись, но как быть с исключениями? Можно ли как-то пометить свойство (возможно, с атрибутом), чтобы указать, что я не хочу, чтобы оно сохранялось? Или я должен просто сбрасывать значения перед каждым моим вычислением?

Любая помощь с благодарностью. Заранее спасибо.

1 Ответ

0 голосов
/ 09 июня 2011

Есть два ответа на этот вопрос.

  1. Прежде всего, когда рабочий процесс сериализуется, это делается с использованием двоичного сериализатора.Таким образом, вы можете пометить любые поля, которые не хотите сериализовать, с помощью атрибута NonSerialized.
  2. При этом указанные расширения рабочего процесса не сериализуются во время сохранения рабочего процесса, поэтому вы должны сделать что-то интересное, чтобы заставить их сериализоваться.Или же вы можете использовать одноэлементное расширение, и оно и его значения остаются неизменными, даже если рабочий процесс сохраняется и перезагружается.
...