# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Введение в EF |
|
|||
На этом уроке мы посмотрели что такое Entity Framework и зачем он нужен. Рассмотрели какие есть слои в архитектуре Entity Framework и как они взаимодействуют. Также изучили какие есть варианты использования Entity Framework: Database First, Model First, Code First, Code First from Database Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Что ADO.NET лучшее, что можно использовать для работы с СУБД Сложности: Ничего Комментарии: Вроде всё понятно, идём дальше =) |
|||||
2 | Создание приложения |
1 тест |
|||
На этом уроке мы создаем простое оконное приложение, которое состоит из формочки ввода логина и пароля и главной формы приложения.
Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: Всё хорошо |
|||||
3 | Подключение БД по методу CodeFirst |
|
|||
На этом уроке мы рассмотрим как подключить Entity Framework к нашему проекту. * Почитать о соглашениях по именованию для Entity Framework: http://metanit.com/sharp/entityframework/2.6.php Отчёт отправил: 9567. Максим Выполнено за 45 мин. [Показать отчёт] Научился: Создавать базу данных с помощью метода CodeFirst Сложности: Сначала у меня Visual Studio просто отказывалась показывать ADO.NET EntityFramework Data Model, и что бы я не делал она не появлялась. Так что сегодня ночью я переустановил студию и всё снова стало хорошо =) Ещё, когда создавали класс Initializer, мы там передавали Context, а у меня его не было, у меня этот класс назывался Model1, странно. А так всё просто =) Комментарии: Всё отлично, всё понравилось =) • Когда вы писали {Key}, возможно, вы имели ввиду [Key], просто второй вариант у меня работает, в отличии от первого • Не очень понятно, как нам при изменении модели сохранять данные, которые уже находятся в БД. Ну добавил я один столбец, и что теперь всю базу затирать? Нельзя ли как-то просто модифицировать текущую версию (посмотреть чем новая модель отличается от старой и применить эти изменения)? • Ещё не до конца понял, как указывать параметры столбцов (такие как NOT NULL) и как создавать, например, вторичные ключи? |
|||||
4 | Основные приемы работы с БД через EF |
|
|||
На этом уроке мы используем созданное подключение к БД для выполнения аутентификации. Если у вас будут вопросы по базе данных MySQL - они будут рассмотрены в следующем уроке. Отчёт отправил: 9567. Максим Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Подключаться к базе данных и получать данные из неё Сложности: • Помните я переименовал Model1 на Context? Так вот, при выполнении запроса, мне выдало: :No connection string named 'Context' could be found in the application config file." (видимо, не до конца переименовал), так что я вернул первоначальное имя. • Дальше у меня начала вылетать пустая ошибка (null) на строке, где мы получаем пользователя, наверно, это из-за того, что я к MySql подключился... • Ещё покопался в App.config и к серверу приложение таки подключилось, и даже таблицу создало, но появилась такая ошибка: "Specified key was too long; max key length is 767 bytes". Оказалось (http://stackoverflow.com/questions/20602114/mysql-connector-6-8-2-rc-entity-framework-6-and-code-first), что нужно перед классом с моделью писать: [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] Комментарии: Фух, если самому что-то делать, то столько времени уходит =) Нет, ну LINQ это далеко не всегда выход, SQL в плане удобства формирования запроса, как по мне, на порядок удобнее (особенно, если этот запрос 100+ символов в длину). У меня в паре программ есть запросы для формирования статистики, так они вообще больше 1000 символов (да, я пытался их оптимизировать, но дело в том, что там статистика довольно объёмная). В общем, знание, как выполнять свои SQL запросы очень бы пригодилось =) |
|||||
5 | Использование MySQL |
|
|||
На этом уроке мы рассмотрим как подключить Entity Framework к базе данных MySQL, какие пакеты для этого надо установить и с какими проблемами можно столкнуться при использовании этой базы данных. Отчёт отправил: 9567. Максим Выполнено за 10 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: Я очень извиняюсь, если что-то не так скажу, но просто я уже не могу об этом молчать. Нет, я конечно всё понимаю, информация, которую вы нам преподносите чрезвычайно полезная и интересная, НО к вебинарам нужно готовится, так как в записи никому не хочется смотреть, как половина времени уходит на поиск (именно на поиск) решений непредвиденных проблем или, ещё хуже, если эти проблемы так и останутся нерешенными. И этот относится ко всему вышеперечисленному. Я ещё когда выполнял задания с предыдущего вебинара решил, что сразу буду работать с MySql, так что проблема подключения возникла сразу же, я покопался интернете, в самой программе и потихоньку, но решил эту проблему. И отправил отчёт об этом с инструкцией, если ещё кому-то будет нужно (videosharp.info/9567/checking/ef=841). В итоге, оказалось, что нужно всего лишь немного откорректировать строку подключения и над классом с моделью (Context) написать: [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] Как видите, на всё это уходит отсилы минута (ну, если писать всё с нуля 5-10 минут максимум). Это на счёт первого пункта. Теперь дальше. Вместо той надписи над классом с моделью, в уроке в рекомендовали в строке подключения дописать: "Allow User Variables=True;". Я подумал, ну ладно, может это тоже поможет, и угадайте что? Не помогло, что видно на скриншоте 1. В то время, как моё решения, которое я отправил за дня 4 до вебинара, работает (скриншот 2). Ну ладно, видимо эти отчёты не доходят до автора этого курса, но на самом уроке показать, что всё работает нужно же было... Ещё раз, извините, просто уже не мог не сказать. |
|||||
6 | Миграция Базы |
|
|||
На этом уроке мы посмотрим что такое миграция, основной алгоритм выполнения миграции, как она происходит и какие есть особенности выполнения миграции для MySQL. Отчёт отправил: 9567. Максим Выполнено за 15 мин. [Показать отчёт] Научился: Понял, что такое миграции и как их делать вручную Сложности: Ничего Комментарии: Миграции - это действительно классно =) У меня есть несколько вопросов: 1) Если я хочу откатится к миграции, которая была несколько миграций назад, то приложение будем откатывать поочерёдно все миграции от самой новой, до той, что мне нужна? 2) Допустим, у меня есть готовое приложение, которое работает с локальной БД, и я его отдал паре друзей. Я обновил это приложение (и структуру БД), создал миграцию, проверил её корректность и обновил базу данных на своём компьютере. Как мне сделать так, чтобы новая версия приложения сама проверяла структуру БД, к которой подключена и при необходимости выполняла недостающие миграции? |
|||||
7 | Один за всех и Все за одного |
|
|||
На этом уроке мы рассмотрим как реализовать различные типы связей между таблицами в Enitity Framework: 1 : 1, 1 : N, N : M. Отчёт отправил: 9567. Максим Выполнено за 40 мин. [Показать отчёт] Научился: Реализовывать различные типы связей и создавать промежуточные таблицы не создавая их =) Сложности: Ничего Комментарии: Всё просто замечательно =) И пара маленьких вопросов =) 1) Почему вы называете таблицы в единственном числе? Например, таблица User (в которой хранятся пользователИ). Мне кажется, это может приводить к небольшой путанице, допустим, создадим мы какую-то переменную user (в которой хранится 1 пользователь) и перепутаем её с User (таблицей со всеми пользователями). Это я конечно утрирую, но всё же =) 2) В чём разница между: public string Name { get; set; } и public string Name; Да, get и set можно настраивать, но обычно, мы этого не делаем. Какие преимущества нам даёт эта запись? А по самому уроку вопросов нет, всё супер =) |
|||||
8 | Добавление - Извлечение |
|
|||
На этом уроке мы сделаем добавление записей в базу данных, а также их извлечение.
Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Доставать данные из базы данных Сложности: Додуматься, как сразу вывести все роли полученного пользователя: string.Join(", ", user.Roles.Select(t => t.Name)) Комментарии: Отличный курс!!! Всё очень понравилось (кроме части про MySql, но то ладно). А вот по поводу моего второго вопроса отсюда (videosharp.info/9567/checking/ef=853). Я подумал, я порылся в context'е и так и не понял, как это делать. Пожалуйста, можете ответить, для меня это действительно важно (есть у меня одна программка, которой пользуется один учебный центр в нескольких филиалах, и если программа будет сама обновлять базу данных - будет просто замечательно) =) |
|||||
Итого: 8 видеоуроков |
3 час. 42 мин. 1 тест |
38 чел. | |||
Финалисты: Максим, Андрей, Кирилл Шмойлов, Андрей Н., Екатерина, Новопашин Владимир, Tekashnik, Сергей В, Денис, Владимир, Евгений, Валерий Жданов, gazetter, Максим Лапшинов, Кирилл Лебедев, Сергей Соколов, Елена, Алексей Хонин, Константин, Алексей Малышев, Иван Воронин, WildOrc, Дмитрий, Danil42Russia, chokayes, Дмитрий Б, Николай Денисов, Sergey, FireWolf, Max, Айдар, Den Andreevich, vip, Евгений, Татьяна, D_M, Антон, Tim . |