Тёмный

Уроки C#. Entity Framework Code First. Часть 1 

Программирование - это просто
Просмотров 58 тыс.
50% 1

Взаимодействие с базами данных через Entity Framework Code First
Поддержи развитие канала! money.yandex.r...
Qiwi Wallet +79534684569
Группа ВКонтакте: easycomp

Опубликовано:

 

30 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 91   
@НиколайПокровский-р6в
Чувак, вернись, таких уроков по С# больше нет на русскоязычном ютубе
@АндрейКлименко-н2ц
Жалко, что на самом интересном месте остановился выпуск уроков. Бесценный материал.
@trismegistus9602
@trismegistus9602 5 лет назад
уже 2019, а я все еще жду новых уроков( Возвращайся, ты нам нужен
@p4cific_official
@p4cific_official 3 года назад
шёл 2021 год... Хатико еще здесь...
@k..
@k.. 3 года назад
:/
@blackbarry7730
@blackbarry7730 Год назад
@@k.. 2023:)
@dmitrij34
@dmitrij34 8 лет назад
Мы вас заждались(. Возвращайтесь пожалуйста(
@alexanderpotashev1927
@alexanderpotashev1927 8 лет назад
С миграциями связан очень слабо и не понимал их принцип действия. После этого урока все уложилось в голове аккуратно и красиво. Очень большая просьба не останавливать развитие канала и создание уроков по C#!
@TheCrow_9401
@TheCrow_9401 8 лет назад
обидно что опять перестали выпускать ( на самом интересном=(
@seriga3
@seriga3 8 лет назад
Автора можно понять. Кто-то заливает видео с контентом типа “котики” и получает просмотров сотнями тыс. Тут годы опыта, многие часы подготовки и в виде экстракта преподносится нам. К сожалению новоявленных программистов, или программистов самоучек для кого этот контент является золотым гораздо меньше.
@TheCrow_9401
@TheCrow_9401 8 лет назад
+seriga3 да это понятно( но хотя бы просто написать что не успеваю(
@YuriiKosiak
@YuriiKosiak 7 лет назад
Ну... не согласен вообще. По такой логике не нужно выращивать на огороде еду или покупать молоко у бабушек, потому что все едят напичканные химией продукты, не нужно производить хлеб, потому что много людей едят фастфуды. Может кому то покажется странным такое сравнение, но информация это как еда для мозга и от её качества и количества зависит многое в жизни человека как и с физическим здоровьем. И тех кто выбирает фастфуды и химию в десятки раз больше чем тех кто кушает домашнее, то же и с котиками. А в итоге что ? Итог уже явно виден, достаточно посмотреть на кол-во болезней возросших в сотни раз, да таких, что ещё никогда в истории о таком не слышали и не знают как лечить и чем. К тому это все, что нужны люди, которые будут выдавать вот такие вот экстракты и пусть на канале будет 6000 в противовес 100000 котолюбителей, но это не 1 человек как можно было раньше с репетитором заниматься и не 30 как в школе и не 100 как с преподавателем в институтской аудитории, это 6000+ а автор сделал это видео только 1 раз и все, смотрят те кому это действительно нужно и получают от этого реальную пользу. Да и сам автор получает немало пользы от преподавания, ведь таким образом происходит систематизация его собственных знаний, так что даже если бы тут было 0 просмотров, автор бы уже ничего не потерял. Я думаю тут дело в другом, может быть просто надоедает одно и тоже и иногда человеку нужна смена деятельности, может быть автору нужно немного больше времени на то чтобы преподнести все качественно так как нужно, может быть вообще семья в конце концов и нету на это времени. Просто будем ждать и надеяться, что выйдут ещё уроки, потому что качественного не так много , а это реально качественно, за что и спасибо.
@ДенисЧистов-э7ю
@ДенисЧистов-э7ю 6 лет назад
Мы всё ещё ждём продолжение)
@zolotayaorda1226
@zolotayaorda1226 4 года назад
Неплохой видеоурок, но не хватает пояснений, смотрела в скорости 0,25
@p.shpyro
@p.shpyro 4 года назад
Что ж, думаю автор примет к сведению и исправит ошибку четырёхлетней давности)
@Inquisitor_ss
@Inquisitor_ss 8 лет назад
Большое спасибо что вновь затронули тему Entity Framework. Это очень интересная и полезная тема. И при просмотре данного урока у меня возник вопрос. А как именно (какой командой) можно откатить состояние базы данных на нужное?
@felixromanchenko3330
@felixromanchenko3330 8 лет назад
Крайне благодарен за Ваши уроки, продолжайте в том же духе) Ничего лишнего, приятная речь, доступное объяснение)
@rvrby2541
@rvrby2541 8 лет назад
Спасибо за то, что выпустили, надеемся увидеть еще уроки.
@sergepikovsky3385
@sergepikovsky3385 8 лет назад
CodeFirst Approach. 1. Создаем консольное приложение. 2. Создаем в нем папку "DataModel". 3. Добавляем модель ПКМ на папке DataModel -> Add -> New Item... -> (уже в визарде) Data -> ADO .NET Entity Data Model (на этом шаге обзываем модель понятно - LibraryContext [т.к. это и имя класса наследника DbContext]) -> -> Entity Code First Model -> Finish. 4. Комментарии в классе LibraryContext удаляем. 5. Базовый конструктор DbContext требует строку подключения либо ключ из App.config, отвечающий за неё. По умолчанию сервер для БД есть: data source=(LocalDb)\v11.0; По умолчанию название БД есть: initial catalog=Library.DataModel.LibraryContext; В уроке сервер переключается (я этого делать не стал) : data source=.\MSSQLEXPRESS; //это полноценный экземпляр в противовес локальному. A название БД (я это тоже сделал) : initial catalog=LibraryDb; 6. Открываем MS SQL Server Management Studio и пока нашей базы там не видно, что естественно. 7. Создаем сущность: DataModel -> Add -> Class... (называем "Book"). Добавляем ему свойств ключа, названия и автора. 8. Извещаем контекст о новой сущности, а именно: создаем в нем свойство "public DbSet Books { get; set; }" 9. Все готово, чтобы записать в БД сведение о какой то книге, что и делаем в методе Main: а) оборачиваем в using создание контекста. б) создаем и инициализируем инстанс класса Book. в) добавляем ссылку на вновь созданный инстанс к свойству контекста Books. г) сохраняем на контексте изменения. 10. Для создания БД достаточно просто запустить приложение на выполнение. Делаем это. Кроме Book в LibraryDb (которую мы сразу обнаружили в MS SQL Server Management Studio) есть еще и таблица __MigrationHistory (о ней позднее). Запись о книге в таблицу Book внесена. Запись же в таблице __MigrationHistory выглядит так (сокращенно): MigrationId ContextKey Model ProductVersion 201603281548448_InitialCreate Library.DataModel.LibraryContext 0x1F8B08000000000 6.1.1-30610 11. Добавляем в таблицу Book свойство ISBN. 12. Меняем код метода Main, что бы при следующем запуске и создании еще одной записи о книге заполнялось и поле ISBN. 13. Запускаем приложение и получаем ошибку, в описании к которой говорится, что в модели были изменения после того как БД была создана. И что-то про миграции... Миграции - очень мощный инструмент EF при Code First, они позволяют вести историю изменений БД в коде. По сути любые изменения в БД при Code First проходят через миграции. Чтобы запустить механизм миграций нам необходимо перейти в "Console Package Manager". Выбираем выпадающем списке "DefaultProject:" наш проект Library. После этого ввести команду Enable-Migrations и нажать Enter. Если все нормально то увидим строки, последняя из которых будет: "Code First Migrations enabled for project Library.", и появляется папка Migrations в которой будет 2 файла: - Configuration.cs (в нем идет настройка доступа к нашей БД, а также метод Seed, о котором позже) - 201603281548448_InitialCreate.cs (Название файла класса меняется от даты, цифры и прочее в названии класса совпадают с цифрами в столбике MigrationId таблицы __MigrationHistory). Это и есть наша миграция. Миграция описывает те действия, которые мы осуществляем в нашей БД. Наша первая миграция является инициирующей. Она создана на основе той записи в БД, которую мы видели. И так, у нас появился класс начальной миграции, соответствующий по названию первой записи в таблице __MigrationHistory поля MigrationId. Он содержит в себе описание БД на момент ее создания (одна таблица Books с тремя полями). Однако с момента создания БД мы в модели добавили еще одно поле ISBN. И этот факт необходимо в миграции отразить. Иначе будет несоответствии модели и БД. 14. Добавление миграции производим в Console Package Manager командой "Add-Migration ISBN" (где "ISBN" - информационная составляющая [по названию добавленного поля] для собственного удобства и может быть заменена на более удобную. После нажатия Enter произойдет сканирование нашей модели данных, выявляются отличия с последней миграцией и эта разница записывается в новую миграцию. У нас появляется новый класс имя которого мы указали при добавлении миграции и в нем мы можем видеть свои действия по добавлению столбца в таблицу. 15. Теперь у нас есть: - измененная модель данных (в папке DataModel); - соответствующая изменениям миграция (201603281805124_ISBN.cs). Осталось применить эту миграцию к БД. Команда Update-Database в Console Package Manager обновит БД. Убеждаемся, для понимания, что в БД, а именно в таблице __MigrationHistory, новых записей пока не появилось, и, выполняем Update-Database. В таблице __MigrationHistory появляется вторая запись, а в таблице Book - новый, заданный нами в модели столбец ISBN. 16. Таким образом, механизм миграций является очень хорошим инструментом для того, чтобы откатить состояние БД на любую точку, в которой зафиксированы миграции, либо наоборот, обновить БД до любой точки. Если встает вопрос обновление клиенской БД у многих клиентов, то с помощью механизма миграций этот вопрос решается крайне просто. 17. Теперь рассмотрим вопрос о мутации данных. Глядя на таблицу Book, видим, что поля не оптимально спроектированы. Поля Title и Author - слишком большой длинны и Title не может, на самом деле быть равен null. Для того, чтобы это исправить мы должны воспользоваться механизмом мутации данных. 18. Переходим в класс Book и указываем атрибутами [MaxLength(1000)] желаемую длину в знаках (в примере 1000 знаков). Для этого подключаем пространство имен System.ComponentModel.DataAnnotations. Атрибутом [Required] декорируем обязательные поля. 19. Внесенные изменения оформляем через добавление еще одной миграции "Add-Migration DataAnnotations". Создается миграция 201603282313277_DataAnnotations.cs по которой легко понять что же меняется в БД. Применяем Update-Database в Console Package Manager для обновления БД. 20. Запускаем код на выполнение и убеждаемся в том, что новая книга добавилась: BookId Title Author ISBN 1 Война и мир Лев Толстой NULL 2 Анна Каренина Лев Толстой 5-05-000746-1 21. Вопрос: Почему столбец BookId стал ключевым? - а потому, что работают соглашения по умолчанию, в соответствии с которыми, столбцы, названные прибавлением к названию таблицы суффикса Id - то EF по умолчанию делает его ключевым. Либо столбец называется "Id" - он тоже станет ключевым. Если мы хотим явно (а не по умолчанию) сделать столбец ключевым, мы можем использовать аннотацию [Key].
@vanish14
@vanish14 4 года назад
Ля, чувак. Я думал что нашёл уже идеальное объяснения, но продолжение нет. Не надо так...
@sergpavlenko1403
@sergpavlenko1403 4 года назад
Может мне ктото обьяснить нахер эти миграции нужны? Упростили жизнь..... я еще и изучать команды миграции должен вместо простого изменения базы данных.....
@anaredbeard6052
@anaredbeard6052 5 лет назад
"Скоро выйдет вторая часть..." ))). Обещанного три года ждут. Может, в марте 2019 таки повезет? Вы молодец. Вернитесь к нам, пожалуйста ).
@likeme8791
@likeme8791 4 года назад
Так уже январь 2020
@Zliun
@Zliun 4 года назад
Всё ещё без уроков. Кто находил актуальные контакты Игоря?) Возможно сервис patreon поможет.Я могу отдавать рублей 500 в месяц на эти уроки, они шикарны. Со мной ещё человек 40 будет, я уверен.
@ВалерийВаланчус
@ВалерийВаланчус 3 года назад
Чтобы сохранить массив или коллекцию мне нужно обязательно создавать базу данных или есть какой-то прием сохранения коллекции в файле ? Я пытался сохранить коллекцию в файле , но у меня сохраняется только один член коллекции .
@СергейФролов-о2н
Игорь, не давно нашел ссылку на ваши уроки здесь www.cyberforum.ru/csharp-beginners/thread1673551.html После этого просто их все просматривал, не отрываясь. Реально лучшее изложение материала, которое я встречал. Не знаю, почему вы не закончили урок по Code First программированию (видимо были свои причины). Но счел своим долгом просто поблагодарить за выложенный материал. Если будете продолжать, я обязательно поддержу развитие канала. Qiwi Wallet +79534684569 этот кошелек все еще ваш?)
@magazakaryan4733
@magazakaryan4733 4 года назад
2020год - я всё еще жду 2ой части ...
@КанторкаЮрки
@КанторкаЮрки 5 лет назад
Вернись,а то плакать буду
@Gera.Kakogo-Hera
@Gera.Kakogo-Hera 2 года назад
Ох#енно. Быстро, качественно,, недорого
@biosvova
@biosvova 5 лет назад
Здравствуйте, не бросайте дело, продолжайте, жду вторую часть!!!
@sardd5796
@sardd5796 3 года назад
Я поставил колокольчик. Жду, пока прозвенит
@Margarita-nx8kd
@Margarita-nx8kd 5 лет назад
+1 а продолжения entity не будет? 😢
@АрсенийПелех
@АрсенийПелех 6 лет назад
Продолжайте!!!
@m0n03
@m0n03 8 лет назад
Поскорее бы уже следующий урок по WPF
@r5_d5
@r5_d5 6 лет назад
Ждем продолжения!!
@JuiKoloshi
@JuiKoloshi 5 лет назад
Нужна помощь! Публикую mvc сайт (пусть например шаблон) из visual studio дома на iis сервере +mssql2012 express. Щас я прописываю строку подключения явно, но если я захочу опубликовать ее на каком то хостинге, где я понятия не имею об имеющейся субд, как мне это реализовать? Ответьте хотя бы в 2ух словах, остальное я нагуглю.
@13danyocean13
@13danyocean13 8 лет назад
интересно, чем руководствуются в майкрософт, убирая database first?
@dzmitrykuhukou4480
@dzmitrykuhukou4480 2 года назад
И все еще ждем)
@Максим-э5н4ч
@Максим-э5н4ч 8 лет назад
Доброе утро:) Хотел сказать Вам СПАСИБО за Ваш канал. У меня есть вопрос почему когда я выбираю ADO.net Entity Data Model у меня нету Empty Code First Model и нету Code First DataBase. EntityFramework 6.1.3 установлен и NuGet.Tools тоже как сделать что бы эти модели появились? Заранее Спасибо:)
@nikitapochechuev5247
@nikitapochechuev5247 8 лет назад
По поводу "миграций", предположим у меня была сущность "Человек/Person", доставшаяся "по наследству", с атрибутами Id, FirstName, LastName, BirthDate, GenderId, City, SSN, PassortNumber И тут выяснятся что оказывается это типа пациентов в больницах/поликлиника/... или ещё кто-то, а люди как водится меняют и фамилию и имя и "Паспортный пол" (от чего диагнозы и врачи зависят и не всем "женщинам по паспорту" можно поставить женский диагноз) и договора старые должны быть завязаны на старые документы и т. п. И выясняется что надо сделать Person - Id - BirthDate - BirthGender - SSN (Я надеюсь он не меняется если он есть) - FkCurrentPublisedData (обратная ссылка на дочернюю, текущее значение) - fkCurrentDocument - fkCty - только текущий город без истории (например), хотя история изменения адреса и разные типа адресов тоже может быть PublishedData - Id - fkPerson - fkPreviousPublishedData - FirstName - LastName Document - Id - PublishedData - number - startDate - previousDocument - fkType City - id - name А потом может быть ещё выясняется что и для имён/фамилий надо иметь что-то типа справочника что бы помогать вводу с подсказками и минимизировать вариант неправильного ввода ФИО бабушками-операторшами. Как этими "миграциями" разрулить всё это да ещё с сохранением данных, правильным созданием индексов, уникальный констрейнтов и т.д. При этом если хочется иметь "умный констрейнт" на уровне БД что бы любой клиент (может тот кто импортит данные или ещё что-то) и реализовать его триггером что бы добавление новыйх ФИО означала автоматическую установку их как текущих и ссылка на предыдущие ставилась бы автоматом (мало ли какой-то отдельный процесс или галимый SSIS папкет это делает). Как этими "миграциями" без головняка решается такая задача?
@alexanderspiegel6747
@alexanderspiegel6747 5 лет назад
Очень приятный стиль преподавания. Хочу поддержать донатом. Только хотелось бы понимать какие есть планы на будущее развитие канала. Большая просьба к автору прояснить ситуацию. С уважением!
@EdwardNorthwind
@EdwardNorthwind 5 лет назад
не ну чо, давайте отменим поддержку.... -- А что делать людям, если им нужно написать ПО к уже существующей БД? -- Да плевать на них!
@romazherdev
@romazherdev 8 лет назад
Если я хочу использовать локальный экземпляр БД, то как сделать, чтобы он создавался в папке с проектом? Если connectionString не трогать, то по дефолту создается на диске C:\ в пользователях.
@denyszorin8675
@denyszorin8675 8 лет назад
люблю такой подход )
@leore1016
@leore1016 4 года назад
Спасибо! Пишите больше уроков, логично и лаконично все показываете, все уроки просмотренные доступны для понимания!
@ivanokulichev7834
@ivanokulichev7834 8 лет назад
Большое спасибо за уроки. Оносительно Code First, хотелось бы поподробнее про "n to n relationship", по возможности...
@oyastrebov
@oyastrebov 5 лет назад
Обалдеть) И правда лучший и понятнейший видео-урок. Эх, жаль, что единственный..
@dmitriygolovachyov5493
@dmitriygolovachyov5493 8 лет назад
Отличный урок, хотел узнать а fluent API будет в следующих уроках?
@MrDudeNudem
@MrDudeNudem 4 года назад
Организуй сбор средств на уроки! Уверен, многие поддержат. Уроки реально классные!
@hardkovalchuk
@hardkovalchuk 8 лет назад
Еще хотелось бы услышать о защите целостности БД в entity framework. Маловато информации об этом. Что будет если удалить объект на который ссылается внешний ключ, например как сделать on delete set null?
@ИльяРагулин-е4ф
@ИльяРагулин-е4ф 8 лет назад
Большое спасибо за уроки и правильный русский язык. Продолжайте в том же духе. Ни где не встречал курса по разработке реального приложения- одни учебные. Может у вас получиться создать такой курс, талант преподавателя у вас есть. Одно замечание - темп речи очень быстрый, желательно на сложных местах помедленнее.
@den3v
@den3v 6 лет назад
Игорь делает неимоверную работу. Ни одного дизлайка!!! Такого соотношения почти ни у кого нет!
@mikhailkh8560
@mikhailkh8560 8 лет назад
Перевел деньги на развитие канала. Спасибо большое за уроки! С уважением, Михаил.
@NeverGTI
@NeverGTI 8 лет назад
Отлично преподнесли материал для новичков. Спасибо.
@alexanderchelyadinov604
@alexanderchelyadinov604 7 лет назад
Спасибо большое вам, вы первый на кого я счел должным подписаться!)
@bohgdanlion4521
@bohgdanlion4521 8 лет назад
Спасибо, отличный подход. С нетерпением жду следующей части.
@levlevin8858
@levlevin8858 5 лет назад
Всем привет! Отличные уроки, ждем продолжения.
@mastermood1941
@mastermood1941 3 года назад
20.12.2020 Все еще жду вторую часть(((
@YuriiKosiak
@YuriiKosiak 7 лет назад
Спасибо за видеоурок! все очень качественно и подробно объясняется.
@leonid8484
@leonid8484 4 года назад
Скажите пожалуйста, а продолжение будет ?
@AntonZdornov
@AntonZdornov 7 лет назад
Чувак крутт пройдитесь по лайкам ставьте поддерживайте
@MrDudeNudem
@MrDudeNudem 4 года назад
Вернись, доделай код ферст! Плиз! :)
@yar4ick
@yar4ick 8 лет назад
Урок отличный! Ответил на многие мои вопросы!
@1cBoris
@1cBoris 5 лет назад
Это был шикарный урок, вот бы продолжение его вышло
@alexxaker3318
@alexxaker3318 6 лет назад
А как осуществить изменение и удаление данных?
@РоманСуворов-й2т
Спасибо ! Отличный урок !!!
@kirillbezmaternykh2012
@kirillbezmaternykh2012 6 лет назад
Спасибо за уроки, очень просим продолжение)
@hardkovalchuk
@hardkovalchuk 8 лет назад
Очень актуально. Спасибо большое
@armengishyan9844
@armengishyan9844 7 лет назад
есть второй часть не могу найти ???
@romanromanov4465
@romanromanov4465 8 лет назад
Спасибо! Очень доходчиво и по сути.
@cheguevara1260
@cheguevara1260 8 лет назад
Цитата: "ADO.NET производительнее Entity Framework ~ в 1.5 раза. Использование технологии LINQ еще снижают производительность. За удобство нужно платить." прокоментируйте пожлст
@ZerpicoBlog
@ZerpicoBlog 8 лет назад
Потому что ADO.NET работает на прямую с БД. А EF создает слои, сущности, ссылки и прочее. И целиком обращается с БД по 10 раз всё проверив и синхронизировав. От того и скорость медленее. Но тут что тебе важнее удобства или скорость. Только вот работаю с например с базой где таблиц например 300, еще и куча процедур и представлений и т.п. То конечно в этом плане EF удобнее и оправданее. В остальном лучше ADO.NET. Ну это конечно моё мнение, выводы делай лучше сам, что для тебя и для какой задачи лучше
@biosvova
@biosvova 5 лет назад
Будет ли продолжение?
@ВладимирБаденков-г9й
А где 2 часть? очень надо
@ИльяЗанегин-й1и
@ИльяЗанегин-й1и 7 лет назад
хороший урок. спасибо
@ZnZ
@ZnZ 7 лет назад
А можно как-то сделать что бы база лежала рядом с .exe, и работало у всех?
@Raven666Lich
@Raven666Lich 6 лет назад
ну здесь зависит от того должны ли быть данные общедоступными, если база только для одного пользователя, то можно использовать sqlite, а если данные должны быть общедоступными то приложение должно подключаться к серверу БД
@laiser545
@laiser545 8 лет назад
Большое спасибо
@ШураШу-г1о
@ШураШу-г1о 7 лет назад
Доступно
@sviatoslav3347
@sviatoslav3347 8 лет назад
А будут ли уроки по ASP.NET?
@Defazze
@Defazze 8 лет назад
Скорее всего нет
@ZerpicoBlog
@ZerpicoBlog 8 лет назад
Лучше не надо. Это несколько другая область, Web-программирование. Мне нравится этот канал что здесь нет этого, лучше найди уроки сам уроки по ASP и web-программированию в целом.
@ІлляКубарєв
@ІлляКубарєв 6 лет назад
Программирование - это просто. Похоже, что уроков уже вообще не будет :(
@yar4ick
@yar4ick 8 лет назад
Я понимаю что Вы и так в последнее время делаете очень много работы для канала, но ужасно не хватает курса по ASP.NET MVC 5!
@antonvdovin8104
@antonvdovin8104 8 лет назад
+Ярослав Петренко рано еще курсы пилить, сыроват он еще
@yar4ick
@yar4ick 8 лет назад
Он 13го года как бы, где ж он сырой. Это скорей к MVC 6 относится
@Yarkendar
@Yarkendar 8 лет назад
1) Поясните пожалуйста, в чем разница использования "using" при создании экземпляра класса контекста? Почему бы просто не создать экземпляр этого класса, без использования "using"? 2) Будут ли уроки по ASP.NET и в частности по ASP.NET Core ? P.S.: спасибо за информативный урок :)
@Defazze
@Defazze 8 лет назад
+Yarkendar 1. Потому что контекст данных - это неуправляемый ресурс (БД). Его необходимо явно уничтожать (вызывать метод Dispose), иначе будет утечка памяти. Выход за пределы директивы using как раз автоматически и вызывает Dispose. Чтобы ненароком не забыть 2. Пока в ближайших планах нет
@Yarkendar
@Yarkendar 8 лет назад
+Программирование - это просто, в каких еще случаях, кроме контекста БД, нужно использовать такую конструкцию?
@Defazze
@Defazze 8 лет назад
В тех случаях, когда создаваемый объект реализует интерфейс IDisposable
@kostiantynsemeniuk682
@kostiantynsemeniuk682 8 лет назад
+Yarkendar визде где нужно закрить соединение или очистить ресурси, для применра Stream и наследники. msdn.microsoft.com/ru-ru/library/yh598w02.aspx msdn.microsoft.com/ru-ru/library/system.io.streamreader(v=vs.110).aspx
Далее
C# programming. Lesson 16. Entity Framework. Part 1
35:18
Bearwolf - GODZILLA Пародия Beatrise
00:33
Просмотров 333 тыс.
Свадьба Раяна Асланбекова ❤️
00:12
Всё об Entity Framework Core
2:38:04
Просмотров 53 тыс.
C# programming. Lesson 17. Entity Framework. Part 2
38:09
Примеры C#. DataGenerator. Dependency Injection
19:09