Приложение My Photos ASP.NET MVC 4.0 2014. Цель 1. Разработать модель и базовую функциональность ASP.NET MVC приложения. 2. Ознакомиться с управлением.

Презентация:



Advertisements
Похожие презентации
С помощью Atilekt.CMS Как управлять сайтом. 1. Заходим по адресу: 2. Вводим логин и пароль 3. Выбираем привычный для нас язык.
Advertisements

1C:Электронное обучение Корпоративный университет.
Работа с БД в Zend Лекция 4 1.Модель 2.Классы Zend_Db_Table и Zend_Config 3.Запросы 4.Свойства и методы таблицы.
« Формирование запросов на выборку в БД » « Формирование запросов на выборку в БД » Цель– научиться создавать простые запросы на выборку информации.
Реализация концепции построения и формирования отраслевой системы государственного учета, регистрации и мониторинга (ОСГУРМ) информационных ресурсов сферы.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Система контроля прав доступа При помощи процедур и триггеров в MySQL.
Регистрационная форма КНИГИ Книги систематизированы в соответствии с различными областями знаний и представлены в каталоге коллекций и разделах сайта.
MS Access Краткие сведения. Основные элементы главного окна Access Окно базы данных появляется при открытой БД. В нем - все «рычаги управления» базой.
ПОИСК ИНФОРМАЦИИ В ИНТЕРНЕТ-БИБЛИОТЕКЕ СМИ PUBLIC.RU +7 (495)
Docsvision 5 Система управления документами и бизнес-процессами Приложение «Управление документами» Docsvision 5 Система управления документами и бизнес-процессами.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
Ekaterina B. Egorkina,© VEELTECH.RU Загрузка и вывод изображений Каким образом можно сохранить картинку в БД, а потом отобразить ее на странице?
Отдел информационных и дистанционных технологий УМУ БашГУ СИСТЕМА ДИСТАНЦИОННОГО ОБУЧЕНИЯ Глазами студента.
База данных (БД) – Совокупность определённым образом организованной информации на определённую тему (в рамках определённой предметной деятельности); Организованная.
Технология хранения, поиска и сортировки информации в базах данных
Слайд 1 из 25 CRM для МАЛОГО БИЗНЕСА Работа с клиентами, управление продажами и рабочим временем CRM | SRM | HRM | BPM | CTI.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Программная система «Портал научной группы» (разработано в рамках ПНР-5) 24 марта 2011 г. Челябинск Южно-Уральский государственный университет 1.
Транксрипт:

Приложение My Photos ASP.NET MVC

Цель 1. Разработать модель и базовую функциональность ASP.NET MVC приложения. 2. Ознакомиться с управлением генерацией базы данных. 2

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

Другие темы для разработки Аукцион Есть два типа пользователей – администратор и покупатели. Администратор выставляет вещи для продажи, назначает первоначальную цену и подтверждает покупку. Покупатель просматривает вещи, торгуется и получает извещение о том, что вещь продана ему или не ему. Книжный магазин Есть два типа пользователей – администратор и покупатели. Администратор выкладывает книги, разделяя их по жанрам. Покупатель осуществляет поиск книги, кладет ее в корзину и подтверждает покупку. Покупатель может оставлять отзывы о ранее купленных книгах и читать отзывы других покупателей. Сайт голосования Администратор выкладывает формы для голосования, и просматривает результаты. Форма представляет собой вопрос с несколькими предопределенными ответами. Голосующий просматривает открытые формы и выбирает ответ, за который он голосует. Он может видеть результаты тех голосований, в которых принял участие. Художественный музей Есть музей с залами и картинами в залах. О залах известно: название, о картинах – название, автор, год. Посетители посещают залы, осматривают экспозицию и пишут отзывы о картинах. Могут выполнять поиск картины по фрагменту названия, фамилии художника, диапазону лет и любой комбинации этих признаков. Чтобы писать отзывы, посетитель должен пройти процедуру аутентификации, а если надо, то и регистрации. Администраторы (зарегистрированные пользователи) манипулируют залами и картинами, модерируют отзывы посетителей. 4

5 Простая социальная сеть. Регистрация пользователей. Настройка персональной информации. «Друзья» пользователя. Обмен сообщений с другими пользователями. Поиск пользователей по определенным критериям. Управление пользователями. Модерирование сообщений. [1] [1] Интернет-фотоальбом. Регистрация, загрузка фотографий. Возможность просматривать и оценивать фотографии других пользователей. Поиск фотографий. Управление пользователями. Персональный блог. Регистрация пользователей. Создание блога (блогов). Создание и редактирование статей блога. Тэги статей. Поиск по тэгам, тексту. Комментирование статей. Управление пользователями. Модерирование статей и комментариев. Интернет-аукцион. Просмотр, поиск, и «покупка» лотов. Регистрация и выставление лотов на аукцион. Управление пользователями и модерирование списка лотов. Система тестирования знаний. Регистрация, выбор (поиск) теста. Прохождение теста с контролем времени. Статистика тестирования. Управление пользователями. Редактирование тестов. Расширенная статистика тестирования. Файловое хранилище. Доступ к файлу по короткой ссылке. Общие файлы и файлы с ограниченным доступом. Для зарегистрированных пользователей – возможность размещения файлов и управление файлами. Управление пользователями и их файлами. Поиск файлов. Картотека текстовых материалов (вариант: аудио или видео). Поиск в картотеке по различным критериями. Оценка материалов пользователями. Система учета знаний. Зарегистрированные пользователи («программисты») указывают и оценивают свои знания в различных (сгруппированных) областях. Пользователь - «менеджер» осуществляет отбор программистов по заданным критериям. Возможность генерирования отчетов. Управление пользователями и ролями. Управления списками областей знаний. Система отслеживания заданий. Выдача задания менеджером. Статус задания, согласно рабочему процессу. Процент выполнения. Почтовые уведомления клиентам системы. Управление пользователями и их ролями. Форум. Стандартные операции, присущие любому форуму – добавление тем, сообщений. Модерирование записей. Работа с пользователями форума. Еще темы

Порядок работы над проектом 1. Сформулировать требования к приложению. 2. Разработать пользовательский интерфейс и карту сайта. Сделать эскизы страниц. 3. Разработать модель данных (классы). 4. Поэтапно наращивать функциональность в таком порядке: дополнить модель, добавить контроллер, добавить представление. 6

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

Карта сайта 8 Список своих альбомов и список друзей Фото из одного своего альбома Страница отзывов о фотографии Список альбомов друга Фото из одного альбома друга Страница отзывов о фотографии

Начало работы над приложением 9 1. В Студии 2013 создать пустой проект с файлами MVC. 2. В папку Models добавить классы модели. 3. В папку DAL добавить класс-наследник DbContext. 4. Прописать строку соединения в web.config 5. Установить пакет: PM> Install-Package EntityFramework 6. Создать HomeController с методом Index для показа всех фотографий. 7. Добавить типизированное представление для метода Index.

Классы модели 10 class Photo: Id: Int UserId Image: byte[] Title: string Moment: DateTime --- Albums: List class Album: Id: Int UserId Name: string --- Photos: List class User: Id: Int Name: String --- Albums: List public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } // public virtual ICollection Albums { get; set; } } public class Album { public int Id { get; set; } public int UserId { get; set; } public string Name { get; set; } // public User User { get; set; } public virtual ICollection Photos { get; set; } public Album() { Photos = new List (); } public class Photo { public int Id { get; set; } public int UserId { get; set; } public string Title { get; set; } public DateTime Moment { get; set; } public byte[] Image { get; set; } // public virtual ICollection Albums { get; set; } public Photo() { Albums = new List (); }

Класс контекста 11 public class Repository: DbContext { public DbSet Users { get; set; } public DbSet Albums { get; set; } public DbSet Photos { get; set; } }

Управление генерацией БД 12 Соглашения Атрибуты Fluent API

Соглашение: Первичный ключ Свойство является первичным ключом, если свойство называется Id или Id. Если первичный ключ имеет тип int, long или short, он делается автоинкрементным. 13 public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } // public virtual ICollection Albums { get; set; } }

Соглашение: Бинарные отношения Отношение определяется как бинарное, если у двух классов обнаруживаются свойства или свойства-коллекции с типом противоположного класса. 14 public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } // public virtual ICollection Albums { get; set; } } public class Album { public int Id { get; set; } public int UserId { get; set; } public string Name { get; set; } // public User User { get; set; } public virtual ICollection Photos { get; set; } public Album() { Photos = new List (); }

Соглашение: Внешний ключ Для определения имени свойства, которое поставляет значения внешнего ключа 1) (например, UserId), 2) (например, UserId), 3) (например, Id из класса User). 15 public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } // public virtual ICollection Albums { get; set; } } public class Album { public int Id { get; set; } public int UserId { get; set; } public string Name { get; set; } // public User User { get; set; } public virtual ICollection Photos { get; set; } public Album() { Photos = new List (); } У таблицы Album будет внешний ключ. Свойство класса Album, которое поставляет значения внешнего ключа – UserId.

Атрибуты аннотации данных [Key] Свойство входит с состав первичного ключа сущности [Column] Атрибут свойства для указания имени столбца, ординарного типа и типа данных [ForeignKey] Ставится на навигационное свойство и задает имя скалярного свойства – источник значений внешнего ключа. [NotMapped] Атрибут свойства или класса для его исключения из базы данных [Table] Атрибут класса для указания имени таблицы и схемы [ConcurrencyCheck] Свойство участвует в контроле оптимистической блокировки [DatabaseGenerated] Указывает, как база данных будет вычислять значение поля (Identity, Computed or None) [InverseProperty] Отмечает навигационное свойство, которое представляет другой конец отношения. Используется, например, при авто ссылках. 16

Применение аннотаций данных 17 public class User { [Key] public int Id { get; set; } [Column] public string Name { get; set; } [Column] public string Password { get; set; } // public virtual ICollection Albums { get; set; } } public class Album { [Key] public int Id { get; set; } [Column] public int UserId { get; set; } [Column] public string Name { get; set; } // [ForeignKey("UserId")] public User User { get; set; } public virtual ICollection Photos { get; set; } public Album() { Photos = new List (); }

Fluent API 18 public class Repository: DbContext { public DbSet Users { get; set; } public DbSet Albums { get; set; } public DbSet Photos { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { // Управление генерацией... // Назначение инициализатора Database.SetInitializer(new Initializer()); } В обработчике события ModelCreating можно управлять генерацией и задать инициализатор для сгенерированной базы данных.

Управление генерацией 19 protected override void OnModelCreating(DbModelBuilder modelBuilder) { // Отношение "многие ко многим" между таблицами Albums и Photos. modelBuilder.Entity (). HasMany(a => a.Photos). WithMany(p => p.Albums). Map( m => { m.MapLeftKey("AlbumId"); m.MapRightKey("PhotoId"); m.ToTable("AlbumPhotos"); }); // Ограничение "NOT NULL" и ограничение длины строки для столюца User.Name modelBuilder.Entity ().Property(p => p.Name).IsRequired().HasMaxLength(50); Database.SetInitializer(new Initializer()); } Другие примеры использования Fluent API можно найти в

Инициализация базы данных 20 public class Initializer : IDatabaseInitializer { public void InitializeDatabase(Repository context) { if (!context.Database.Exists() ) { context.Database.Delete(); context.Database.Create(); context.Database.ExecuteSqlCommand( "ALTER TABLE Users ADD UNIQUE (Name)"); context.Database.ExecuteSqlCommand( "INSERT INTO Users (Name, Password) VALUES ('User1', context.Database.ExecuteSqlCommand( "INSERT INTO Users (Name, Password) VALUES ('User2', }

Миграция изменений модели Для синхронизации модели со схемой базы данных имеется механизм миграций с тремя командами: Enable-Migrations – создается каталог Migrations, в котором будет накапливаться программный код миграций. Add-Migration имя_класса_контекста – добавляется код последней миграции Update-Database – вносятся изменения в базу данных 21

Слой доступа к данным 22 Чтобы увидеть сгенерированную команду SQL to Entity, достаточно вызвать метод ToString() для запроса. Методы доступа данных можно разместить в клаcсе Repository или в частичном классе Repository.

Самостоятельно 1. Выбрать тему учебного проекта. 2. Разработать модель данных. 3. Сгенерировать схему в базе данных. 4. Реализовать слой доступа к данным по шаблону "Репозиторий". 5. Реализовать упрощенную схему аутентификации и главную страницу сайта (список альбомов). 23

Team Foundation Services Зарегистрироваться на TFServises Создать проект и команду Заполнить Backlog задачами Выбрать задачи для очередного спринта Спланировать спринт 24