Идеология Web Forms очень похожа на идеологию Win Forms. Есть страницы с элементами управления, генерящими некие события.
Сделаем Web Application, которое умеет получать список книг и их жанров.
Создаем ASP.NET Web Application. Открываем файл «Web.config» и заменяем строку соединения, которая там есть, на строку соединения с нашей БД. (Как это сделать из самой студии – см здесь)
Ок, приложение есть. Теперь нам нужен ORM. Выбираем «Linq to SQL», так как он довольно простой. Хорошая интеграция со студией и самим SQL Server, основные возможности (отслеживание изменений, преобразование типов данных, генерация запросов…) все есть.
Solution – Add - New Project
Создаем проект, class Library – Model. Выкидываем оттуда дефолтный класс «Class1.cs». Вместо него добавляем «LINQ to SQL Classes».
Назовем его «Books.dbml». Открываем его, открываем Server Explorer. Разворачиваем таблички нашей БД, выделяем нужные и просто перетаскиваем на форму.
Как только перетащили таблицы, студия сгенерила классы для работы с «Linq to SQL».
Возвращаемся в Web Application. Добавляем проект «Model» в «References». И создаем новую страницу:
Назовем ее Books.aspx. Переключим ее в режим дизайнера
Открываем Toolbox и перетаскиваем GridView на нашу страничку.
Перетащили. В свойствах таблички указываем «AutoGenerateColumns» значение «False» - «лишние колонки пропадут». Ну и заодно название меняем, например – gvBooks.
Щелкаем на стрелку справа вверху таблички – Edit columns. Можно еще в «AutoFormat» настроить внешний вид, чтобы было красиво J
В «Edit columns» добавляем две колонки типа «BoundField», в свойствах выставляем названия самих колонок – «HeaderText» и то, откуда приедет информация – «DataField».
Назовем источники информации для книг «BookName», а для жанров – «GenreName».
F7 – переход к коду страницы. Открывается метод «Page_Load» - который сработает при загрузке страницы.
Расписываем его.
Открываем соединение:
using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
ConfigurationManager – обращение к конфигурационному файлу, в котором мы в самом начале поменяли строку соединения на нужную нам. Обращаемся к строке по имени - "ApplicationServices" – получаем объект, из которого достаем уже саму строку соединения.
Открываем транзакцию:
using (var tran = new TransactionScope())
TransactionScope – потому что мы работаем с «Linq to SQL».
В транзакции:
var context = new BooksDataContext(conn);
var report = from b in context.Books select new { BookName = b.name, GenreName = b.Genre.name };
gvBooks.DataSource = report;
gvBooks.DataBind();
tran.Complete();
Проинициализировали контекст, с которым будем работать, мы создали файл «Books.dbml», к его названию надо добавить DataContext – получим класс, работающий с нашей БД.
Проинициализировали отчет, записанный с помощью линк-запроса, сделали выборку новых объектов, имеющих всего два параметра – BookName и GenreName (которые мы указали в «DataField» колонок таблицы)
Потом указали, что DataSource нашей таблички – тот самый отчет. И Заполнили ее командой DataBind. После чего завершили транзакцию.
Теперь открываем «Site.Master», находим там NavigationMenu и добавляем туда строку
<asp:MenuItem NavigateUrl="~/Books.aspx" Text="Книги"/>
Все, запускаем наше приложение и любуемся результатом J
Комментариев нет:
Отправить комментарий