Как управлять классом статической модели в приложении .NET Web Form App - PullRequest
0 голосов
/ 22 ноября 2011

У меня две таблицы в БД

имя таблицы Вопросы

столбцы: _id, QuizId, QuestionText

и вторая таблица Ответы

столбцы: _id, QuesId, QuizId, AnswerText, IsRight

Теперь я заполнил такую ​​модель через слой доступа к данным

Class QuestionAnswers
{

   int _id {get;set;}
   string QuestionText {get;set;}
   List<Answer> AnswerList { get; set;}
}

а класс ответа следующий:

class Answer
{
   int _id {get;set;}
   string AnswerText {get;set;}
   boolean IsRight{ get;set;}
}

Теперь, поскольку учащиеся одной группы имеют один и тот же набор QuestionAnswers, поэтому через мой уровень доступа к данным я выберу набор QA только в первый раз, а затем я хочу отобразить эти существующие QA для всех других последующих запросов.

Для этого мне нужно создать статический список QAList . Итак, как управлять этим QAList объектом, потому что я хочу получить доступ к этому объекту из проекта веб-службы, а также из проекта веб-формы, поскольку я имею общий проект библиотек моделей и общих классов BusinessLogic.

Я просто хочу знать, как управлять этим объектом, чтобы он был доступен из нескольких проектов в рамках одного решения, и как управлять этим объектом, чтобы он был доступен для всех пользователей, вошедших в мое веб-приложение (может быть достигнуто с помощью делая класс статичным).

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

доступно из нескольких проектов в рамках одного решения

Перейдите в проект, в котором вы хотите использовать эти классы, и добавьте ссылку на проект в проект, в котором есть эти классы.

  • Щелкните правой кнопкой мыши по ссылкам.
  • Нажмите, чтобы добавить ссылку.
  • Перейдите на вкладку "Проекты".
  • Выберите проект модели.

доступно для всех пользователей, которые вошли в мое веб-приложение

Нет, я отказываюсь.Вы не готовы решать многопоточные проблемы этого экземпляра общего списка.Мой совет: избегайте статического ключевого слова.


Краткое объяснение.Вот статическое свойство.

public static List<Animal> Zoo {get;set;}

ThreadA просматривает список с этим оператором

List<Bear> funnyBears = StaticClassName.Zoo.OfType<Bear>().Where(bear => bear.IsFunny).ToList();

Тем временем ThreadB делает следующее:

StaticClassName.Zoo.Add(new Zebra());

ThreadA теперь получаетисключение о том, что списки не могут быть перечислены во время их изменения.

Кроме того, узнайте о RaceConditions (особенно для вычислений) и Deadlocks (что происходит, когда вы пытаетесь решить условие гонки во второй раз).

0 голосов
/ 22 ноября 2011

Думаю, мне следует перейти по этой ссылке http://geekswithblogs.net/Rhames/archive/2011/01/10/using-the-asp.net-cache-to-cache-data-in-a-model.aspx,, поскольку они реализовали кэширование и управляют статическим списком объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...