Обучение C#

Формула программиста
основатель — Волосатов Евгений Витольдович

Entity Framework

Entity Framework



2000 руб.


Для подписки на пакет необходимо авторизоваться.

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Введение в EF 00:19:56 34 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 20 мин. [Показать отчёт]
Научился: Что ADO.NET лучшее, что можно использовать для работы с СУБД 
Сложности: Ничего 
Комментарии: Вроде всё понятно, идём дальше =) 
2 Создание приложения 00:17:59 33 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 20 мин. [Показать отчёт]
Научился: Ничему 
Сложности: Ничего 
Комментарии: Всё хорошо 
3 Подключение БД по методу CodeFirst 00:45:09 30 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 45 мин. [Показать отчёт]
Научился: Создавать базу данных с помощью метода CodeFirst 
Сложности: Сначала у меня Visual Studio просто отказывалась показывать ADO.NET EntityFramework Data Model, и что бы я не делал она не появлялась. Так что сегодня ночью я переустановил студию и всё снова стало хорошо =) Ещё, когда создавали класс Initializer, мы там передавали Context, а у меня его не было, у меня этот класс назывался Model1, странно. А так всё просто =) 
Комментарии: Всё отлично, всё понравилось =) • Когда вы писали {Key}, возможно, вы имели ввиду [Key], просто второй вариант у меня работает, в отличии от первого • Не очень понятно, как нам при изменении модели сохранять данные, которые уже находятся в БД. Ну добавил я один столбец, и что теперь всю базу затирать? Нельзя ли как-то просто модифицировать текущую версию (посмотреть чем новая модель отличается от старой и применить эти изменения)? • Ещё не до конца понял, как указывать параметры столбцов (такие как NOT NULL) и как создавать, например, вторичные ключи? 
4 Основные приемы работы с БД через EF 00:31:59 30 чел. ★ 5 Done
  Отчёт отправил: 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 00:28:24 22 чел. ★ 4.7 Done
  Отчёт отправил: 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 Миграция Базы 00:14:13 19 чел. ★ 4.9 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Понял, что такое миграции и как их делать вручную 
Сложности: Ничего 
Комментарии: Миграции - это действительно классно =) У меня есть несколько вопросов: 1) Если я хочу откатится к миграции, которая была несколько миграций назад, то приложение будем откатывать поочерёдно все миграции от самой новой, до той, что мне нужна? 2) Допустим, у меня есть готовое приложение, которое работает с локальной БД, и я его отдал паре друзей. Я обновил это приложение (и структуру БД), создал миграцию, проверил её корректность и обновил базу данных на своём компьютере. Как мне сделать так, чтобы новая версия приложения сама проверяла структуру БД, к которой подключена и при необходимости выполняла недостающие миграции? 
7 Один за всех и Все за одного 00:33:39 19 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 40 мин. [Показать отчёт]
Научился: Реализовывать различные типы связей и создавать промежуточные таблицы не создавая их =) 
Сложности: Ничего 
Комментарии: Всё просто замечательно =) И пара маленьких вопросов =) 1) Почему вы называете таблицы в единственном числе? Например, таблица User (в которой хранятся пользователИ). Мне кажется, это может приводить к небольшой путанице, допустим, создадим мы какую-то переменную user (в которой хранится 1 пользователь) и перепутаем её с User (таблицей со всеми пользователями). Это я конечно утрирую, но всё же =) 2) В чём разница между: public string Name { get; set; } и public string Name; Да, get и set можно настраивать, но обычно, мы этого не делаем. Какие преимущества нам даёт эта запись? А по самому уроку вопросов нет, всё супер =) 
8 Добавление - Извлечение 00:31:39 16 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 30 мин. [Показать отчёт]
Научился: Доставать данные из базы данных 
Сложности: Додуматься, как сразу вывести все роли полученного пользователя: string.Join(", ", user.Roles.Select(t => t.Name)) 
Комментарии: Отличный курс!!! Всё очень понравилось (кроме части про MySql, но то ладно). А вот по поводу моего второго вопроса отсюда (videosharp.info/9567/checking/ef=853). Я подумал, я порылся в context'е и так и не понял, как это делать. Пожалуйста, можете ответить, для меня это действительно важно (есть у меня одна программка, которой пользуется один учебный центр в нескольких филиалах, и если программа будет сама обновлять базу данных - будет просто замечательно) =) 
  Итого:   8 видеоуроков общей продолжительностью 3 час. 42 мин. 16 чел. ★ 4.95  
  Финалисты:   Максим,   Андрей,   Lik_Kirill,   Андрей Н.,   Екатерина,   Новопашин Владимир,   Tekashnik,   Сергей В,   Денис,   Владимир,   Евгений,   Валерий,   gazetter,   Максим Лапшинов,   Кирилл Лебедев,   Сергей Соколов .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Просто треннинг
Трудности: ничего
все ок
Научился: ничему
Трудности: ничего
нет замечаний