Эффективная работа с EntityFramework Core

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 พ.ย. 2024

ความคิดเห็น • 55

  • @Денис-в5д5ь
    @Денис-в5д5ь 3 ปีที่แล้ว +6

    Только начал смотреть, но коммент все равно нужен для продвижения ))

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Спасибо! Очень нужен!

  • @OlegMongol18675
    @OlegMongol18675 3 ปีที่แล้ว +2

    Спасибо! Много хороших видео выходит у Вас на канале)

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +1

      Спасибо, приятно слышать

  • @valeriik9135
    @valeriik9135 3 ปีที่แล้ว +3

    Спасибо, Сергей! было очень структурированно и полезно. хотелось бы посмотреть про фишки EF 6

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      С EntityFramework 6 всё очень похоже, хотя есть некоторые нюансы.

  • @filoffs
    @filoffs 3 ปีที่แล้ว +4

    Спасибо за видео)) как всегда, интересно и полезно)

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Спасибо за высокую оценку.

  • @LehusWV
    @LehusWV 3 ปีที่แล้ว +4

    Отлично! Можно ещё видос с примерами запросов, чтобы с несколькими таблицами и закрученными условиями.

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +3

      Можно как практическое занятие если поделитесь реальным проектом, чтобы было приближено к реальности.

  • @alekseev74
    @alekseev74 2 ปีที่แล้ว +2

    Уже к .NET 5 EF стал достаточно умен. Можно тонко настроить LINQ-запросы, ChangeTracker (когда следить\не следить), транзакции и т.д. В целом использую EF в 90% случаев, ибо быстро и удобно.

  • @alexanderraf5553
    @alexanderraf5553 3 ปีที่แล้ว +6

    Все неплохо, но забыли еще о главной вещи рассказать. О IQueryable и IEnumerable. Что например если есть фильтрация 'Where' и привести в .ToList() (Ienumerable) сразу, то под капотом выберутся все записи в память, а только потом фильтрация пойдет.

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +3

      Хорошее замечание, правильное. Спасибо.

  • @vasilyh4588
    @vasilyh4588 13 วันที่ผ่านมา

    Не согласен с вердиктом "против", что это "ещё одна прослойка". Просто потому, что - эта прослойка в ЛЮБОМ СЛУЧАЕ появится. Чтобы оперировать данными на уровне приложения - надо как то данные из БД превратить в классы, объекты и т.д. А будет ли это череp EF или какой-то другой враппер - разница объективно невелика. В конце то концов тот же DataReader - "банально и неудобно".
    Опять же BigData - что не так с ними? Ну как-то прийдётся с ними общаться и опять же лопатить - почему не через EF? Делаем Paging output, задействум пул обработанных данных, потоки и прочие весёлые вещи.

  • @DInfinity3
    @DInfinity3 3 ปีที่แล้ว

    Огонь!

  • @StuiChannel
    @StuiChannel 3 ปีที่แล้ว

    Как всегда на высоте)
    спасибо)

  • @Kulibins1
    @Kulibins1 3 ปีที่แล้ว +1

    Привет. пару «замечаний» индексы ускоряют выборку множества где этот индекс применим. Инмемори не всегда на 100% = тому что произойдет на реальной бд, особенно, если будет бд не поддерживающая этот режим, например тот же postgresql.
    И в начале ролика было сказано про альтернативы, и я похоже не правильно понял, потому что подумал будет еще сравнение с ними, их плюсы и минусы. И для новичков entity делает миграции - много раз видел как бд ломают самописными запросами на обновление, а тут меньше человеческого фактора ( знаю что в ролике упоминалось, но очень вскользь)

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +1

      1. InMemory вообще не привящана к БД
      2. Про миграции кратко - в кривых руках и калькулятор зависает. 😄

  • @Бот5329-и5г
    @Бот5329-и5г 2 ปีที่แล้ว +1

    Круто, так много полезной инфы для нубаса

    • @SergeiCalabonga
      @SergeiCalabonga  2 ปีที่แล้ว +2

      Добро пожаловать на канал! :)

  • @artursafiullin7008
    @artursafiullin7008 3 ปีที่แล้ว

    Отличное видео, спасибо!

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Спасибо за комментарий. Я старался.

  • @dns_kr
    @dns_kr ปีที่แล้ว +1

    Здраствуйте. Очевидно что лучше сохранять список объектов в таблицу за один раз, чем 100 раз добавлять по одному. У меня есть транзакции которые приходят по времени хаотично. Как мне лучше всего сделать их сохранение? Я думаю лучше использовать промежуточное хранилище, чтобы всём скопом сохранять в бд. Пытался сделать через Apache Kafka, но сообщения там приходят по одному вместо группы. Есть ли у Вас мысли как лучше?

    • @SergeiCalabonga
      @SergeiCalabonga  11 หลายเดือนก่อน +1

      Я бы использовал MongoDb, если бы возникла подобная ситуация. Отдельно - накопление, отдельно - сохранение в БД.

    • @dns_kr
      @dns_kr 11 หลายเดือนก่อน +1

      @@SergeiCalabonga спасибо

  • @МаксимБондарук-э3ж
    @МаксимБондарук-э3ж 3 ปีที่แล้ว +1

    Всегда использую EntityFrameworkCore как самую популярную ОRM или EntityFramework, но часто вижу требования на позицию джуна знания Dapper, NHibernate, хотелось бы узнать основные отличия м/у этими ORM, что они такое предоставляют что неспоcобен EntityFramework

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +1

      Первый критерий, который вы услышите - производительность. Но в версии EntityFramework Core 6 почти сравняется с Dapper. То есть, если все отключить у EntityFramework, он будет такой же как Dapper

    • @spacerecluse
      @spacerecluse 3 ปีที่แล้ว

      @@SergeiCalabonga добавлю что в ноябре будет обновление. В обновлении со слов разрабов все фичи будут связанны с производительностью +60%

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Именно так я и сказал, или я что-то не пойму, что вы хотели сказать-то?

    • @spacerecluse
      @spacerecluse 3 ปีที่แล้ว

      @@SergeiCalabonga ох, читал в дороге с мобильного, + привычка скорочтения по диагонали подвела

  • @spacerecluse
    @spacerecluse 3 ปีที่แล้ว

    отложенная загрузка. select не обязателен. можно так context.Blogs.Include(p => p.Posts).ToList()

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Select - это projection, причем тут отложенная загрузка?

    • @spacerecluse
      @spacerecluse 3 ปีที่แล้ว

      @@SergeiCalabonga в видео, чтобы не было отложенной загрузки в цикле, вы использовали select, а можно было бы include

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว

      Это примеры с сайта Microsoft, они как раз и говорят, что так делпть не надо.

    • @spacerecluse
      @spacerecluse 3 ปีที่แล้ว

      @@SergeiCalabonga вы объяснить можете почему так делать не надо?
      var blogs = context.Blogs.Include(p => p.Posts).ToList()
      foreach(var blog in blogs) {
      foreach(var post in blogs.Posts) {
      Console.WriteLine(post.Name);
      }
      }};

  • @mt89vein
    @mt89vein 10 หลายเดือนก่อน

    "lazy loading плохо так как если вы начинаете сериализовать объекты так все грузится" просто не сериализуйте никогда модели БД, они не для этого, используйте DTO

    • @SergeiCalabonga
      @SergeiCalabonga  10 หลายเดือนก่อน

      Да, это тоже вариант.

  • @dannycyberwalker
    @dannycyberwalker 3 ปีที่แล้ว

    Получается валидация это не бизнес бизнес логика?

    • @SergeiCalabonga
      @SergeiCalabonga  3 ปีที่แล้ว +2

      Судя по всему, не такой уж и бизнес-процесс. Правильнее сказать, валидация бывает разной. И валидация ввода данных - не бизнес-процесс.

    • @dannycyberwalker
      @dannycyberwalker 3 ปีที่แล้ว +1

      @@SergeiCalabonga Спасибо

  • @spacerecluse
    @spacerecluse 3 ปีที่แล้ว

    context.Configuration.AutoDetectChangesEnabled = false;

  • @735476589
    @735476589 ปีที่แล้ว

    Все смешалось, люди, кони