none
ASP.NET Видимость объектов RRS feed

  • Вопрос

  • Здравствуйте!

    Делаю проект на ASP.NET.

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

    Спасибо!

    20 июля 2013 г. 19:14

Ответы

Все ответы

  • Можно. Вот только как, зависит от того, что вы подразумеваете под любым. Обычно для каждой страницы определяется закрытое свойство содержащее этот объект и используется бо время обработки запроса.

    Сделаем содержимое сообщества лучше, вместе!

    21 июля 2013 г. 5:51
    Модератор
  • Например - класс User. Мне, кроме свойства Name, нужны еще другие свойства, которые хранятся у меня в бд. Каждый раз при необходимости узнать какое-либо свойство можно делать конект к бд и поиск по имени User'а, но это ведь не дело.
    21 июля 2013 г. 6:36
  • Сказать, что либо конретно трудно, так как я не знаю как там у вас всё организованно и какой у вас тип проекта. Но влюбом случае сделав объект полем класса, в которм вы работаете и загрузив его однажды, не будет нужды выполнять запросы повторно. Скажем если это веб-формы, то внутри класса страницы и пользовательского элемента. Но бывают случаи, что данных много и не всегда они нужны. Тогда целесообразнее использовать отложенную загрузку, т.е. делать запросы. Попробуйте более подробно описать ваш конкретный случай.

    Сделаем содержимое сообщества лучше, вместе!

    21 июля 2013 г. 11:32
    Модератор
  • Я создал пустое приложение ASP.NET, использую WebForms.

    У меня есть юзер, у которого кроме логина еще есть данные, которые мне необходимы(это где-то 1-2 поля, остальные нужны редко)

    Для коннекта с бд у меня модель Entity Framework.

    21 июля 2013 г. 13:06
  • Сделайте объект контекста полем класса страницы или мастар страницы. А инициализируйте например в событии Page_Load.

    Сделаем содержимое сообщества лучше, вместе!

    21 июля 2013 г. 18:57
    Модератор
  • Извините пожалуйста, но не могли бы вы показать это - Сделайте объект контекста полем класса страницы или мастар страницы?
    22 июля 2013 г. 1:04
  • Примерно так:

    using System;
    using System.Data.SqlClient;
    
    namespace WebApplication
    {
      public partial class WebForm : System.Web.UI.Page
      {
        private MyDbContext dbContext = new MyDbContext();
        protected void Page_Load(object sender, EventArgs e)
        {
          
        }
      }
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaEditor 25 июля 2013 г. 18:00
    • Отменено предложение в качестве ответа Dmitriy Ler 29 июля 2013 г. 8:01
    22 июля 2013 г. 18:03
    Модератор
  • Прощу прощения за столь долгий ответ.

    Наверное вы не поняли меня, мне нужно использовать объект во всем приложении, объявив и инициализировав его единожды.

    В вашем примере объект будет виден только в пределах страницы, если я не ошибаюсь.

    29 июля 2013 г. 8:03
  • Тогда вам надо хранить его либо в состоянии сеанса либо в состоянии приложения. Но в случае с объектом контекста это не очень правильно.

    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaEditor 29 июля 2013 г. 18:59
    • Помечено в качестве ответа Dmitriy Ler 30 июля 2013 г. 1:08
    29 июля 2013 г. 11:13
    Модератор
  • Спасибо.
    29 июля 2013 г. 11:16