Помощник по статье Rails - «a» или « an »

Кто-нибудь знает Rails Helper, который может автоматически добавлять соответствующую статью к заданной строке? Например, если я передаю «яблоко» функции, получится «яблоко», тогда как если бы я отправил «банан», оно вернулось бы »

Ссылка на объект не установлена ​​на экземпляр объекта.

Невозможно получить доступ к удаленному объекту. Имя объекта: «DataContext доступен после Dispose».

, но не всегда.

Любой отдельный запрос веб-службы может привести к 10 или 15 запросам к базе данных и 1 или 2 обновлениям.

Я разработал мое приложение со слоем доступа к данным, которое представляет собой набор объектов, представляющих таблицы в моей базе данных, которые содержат всю бизнес-логику. Это отдельный проект для моей веб-службы, поскольку он используется совместно с веб-интерфейсом.

Объекты доступа к данным являются производными от базового класса, у которого есть метод GetDataContext () для инициирования экземпляра контекста данных всякий раз, когда это необходимо.

Во всех моих объектах доступа к данным я написал следующее:

using (db = GetDataContext())
{
    // do some stuff
}

, который с радостью создает / использует / удаляет мой объект DataContext (созданный sqlmetal.exe) для каждого взаимодействия с базой данных.

После многих часов царапины в голове, я думаю, что решил, что причина моих ошибок - что под нагрузкой объект datacontext создается и удаляется слишком часто, и мне нужно что-то изменить, чтобы использовать один и тот же код данных на время запроса веб-службы.

Я нашел эту статью на сайте Интернет, в котором есть DataContextFactory, который, кажется, делает именно то, что мне нужно.

Однако теперь, когда я реализовал это, и DataContext сохраняется как элемент в HttpContext, я получаю ...

Невозможно получить доступ к утилизируемый объект.

Имя объекта: 'DataContext, доступ к которому осуществляется после Dispose.'

... всякий раз, когда мой текст данных используется более одного раза. Это связано с тем, что мой код , использующий (...) {} , удаляет мой текст данных после его первого использования.

Итак, мой вопрос ... прежде, чем я прохожу весь свой уровень доступа к данным и удаляю множество использований , как правильно это сделать? Я не хочу вызывать утечку памяти, удаляя использования , но в то же время я хочу поделиться своим контентом данных между разными объектами доступа к данным.

Следует ли мне просто удалить usings и вручную вызвать метод dispose непосредственно перед тем, как я вернусь из запроса веб-службы? Если это так, то как пройти, чтобы я захватил все, имея в виду, что у меня есть несколько блоков try-catch , которые могут стать беспорядочными.

Есть ли другой способ сделать это лучше? Должен ли я просто забыть об утилизации и надеяться, что все будет неявно очищено?

ОБНОВЛЕНИЕ

Проблема не связана с производительностью ... запросы обрабатываются очень быстро, не более 200 мс. Фактически, я протестировал его под нагрузкой, без проблем сгенерировав множество поддельных запросов.

Насколько я понимаю, это связано с нагрузкой по одной из двух причин:

  • Большое количество запросов приводит к тому, что параллельные запросы влияют на друг друга
  • Проблема возникает чаще просто из-за большого количества запросов.

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

7
задан BG100 22 March 2011 в 11:47
поделиться