ObjectContext в ASP.Net - PullRequest
       7

ObjectContext в ASP.Net

3 голосов
/ 03 марта 2011

Я работаю с проектом в ASP.Net с использованием Webforms. Я использую Entity Framework для сохранения данных в Microsoft SQL.

Мой вопрос:

Можно ли использовать класс Static, чтобы сохранить ObjectContext в EF живым и поместить / получить объекты, НЕ сохраненные внутри ObjectContext?

Я хочу создать объект, а затем добавить его с помощью AddObject в ObjectContext, но НЕ делать изменений. Все это в одной веб-форме. А затем в другой веб-форме получите доступ к ObjectContext и получите объект при добавлении.

Это возможно?

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

Мои правила использования ObjectContext:

  1. Не используйте статический контекст.
  2. Не делиться контекстом.

Вы пытаетесь нарушить оба правила.Если вы сделаете это, ваше приложение будет иметь неопределенное поведение.Создайте новый экземпляр ObjectContext для каждого запроса.Это то же самое, что открытие нового соединения и запуск новой транзакции в запросе вместо совместного использования одного соединения и одной транзакции между всеми ними.

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

Кроме того, в веб-приложении это стало еще интереснее, поскольку ObjectContext не является поточно-ориентированным.

0 голосов
/ 03 марта 2011

Как правило, вы не хотите. ObjectContext предназначен для единицы работы, действующей для единого набора связанных транзакций. В приложении ASP.NET это обычно соответствует одному запросу.

Если вы должны сохранить его для нескольких запросов, я бы не стал использовать ни статический класс, ни контекст приложения. Вместо этого я бы рекомендовал использовать Cache, а затем присоединить к нему обратные вызовы, которые позволят вам убедиться, что все ваши транзакции зафиксированы до того, как он будет удален, на всякий случай.

0 голосов
/ 03 марта 2011

Вы можете добавить его в коллекцию элементов приложения. См. Этот пост в блоге для синтаксиса и тому подобное.

http://www.informit.com/articles/article.aspx?p=27315&seqNum=3

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