Тёмный
No video :(

Entity Framework Core 5.0: The Next Generation for Data Access 

dotnet
Подписаться 297 тыс.
Просмотров 122 тыс.
50% 1

Use C#, .NET classes, and LINQ to interact with databases like Sqlite, Azure SQL Server and even Azure Cosmos DB from .NET 5 apps with Entity Framework Core. See the latest features in action like many-to-many, table-per-type and filtered includes.
Get your questions answered on the Microsoft Q&A for .NET - aka.ms/dotnet-qa​
Learn .NET with free self-guided learning from Microsoft Learn: aka.ms/learndotnet

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

 

26 авг 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 146   
@MusicalGeniusBar
@MusicalGeniusBar 3 года назад
Its insane how he explained ef core in 5 minutes
@cdv130
@cdv130 3 года назад
I've meet Jeremy at a talk before and he is a master at explaining stuff, and a really chill dude
@michaelsimmons2497
@michaelsimmons2497 3 года назад
2.5 min at 2x speed. That's quite a ride!
@willinton06
@willinton06 3 года назад
@@michaelsimmons2497 1.75 minutes a 4X
@AlteMetallmuehle
@AlteMetallmuehle 3 года назад
@@willinton06 seems like your player is no longer working properly 😆
@Spivonious
@Spivonious 3 года назад
It took 13 years for EF to properly support many-to-many relationships.
@Spivonious
@Spivonious 3 года назад
Also, TPH breaks db normalization. TPT is the "correct" method and should be encouraged. With proper relationships and indexes in place, joins should not be a major performance concern.
@adamc1694
@adamc1694 3 года назад
Coming from WebObjects, yes after 30 years Microsoft's ORM is still only very basic. There is no GUI mapping tool. No entity to entity (1 to 1/ 1 to many/ many to many) relation mapping. No caching options. Not thread safe. The list go on... Many many years ago in a Spring class, the instructor said he has a buddy working for Microsoft in the middle of working on a ORM solution. Bill Gate personally came down to stop him. A ORM would hurt their SQL Server sale.
@hck1bloodday
@hck1bloodday 3 года назад
@@adamc1694 sorry, but i don't see how an orm coud impact sq server sales, could you please elaborate?
@adamc1694
@adamc1694 3 года назад
@@hck1bloodday You haven't seen WebObjects's ORM implementation created some 30 years ago. WebObjects's ORM framework has a central object store. So most of the operations are shifted away from the databases to the application servers. If the data (a table record for example) is already in the object store then no SQL will need to fry up again. To compare: 1. Microsoft's solution: 1000 concurrent users browse the data driven web page, 1000 copies of the same record will be fetched and stored in the application. 2. Apple's solution: 1000 concurrent users, only one actual record is fetched and kept in the application. Instead the application only keeps track of changes somewhat like the astracking in EF Core. When one of the 1000 users makes a change, the framework will send a notification to the other 999 sessions and their records will be updated automatically. Again no SQL except one will be involved.
@Miggleness
@Miggleness 3 года назад
@@adamc1694 @Adam C caching isnt even the default behavior, and it is not a good default anyway. How do you manage freshness? How do you deal with horizontal scaling? How about devs who enable caching for a table with 10k records? It's a nice option to have but when you're releasing to a huge community you have to be selective with features you release. Caching is not simple and not a core functionality of an ORM. Keeping it out of the ORM is the correct decision IMHO.
@liammcmullen4497
@liammcmullen4497 Год назад
How nice to see things getting easier to do. Thanks!
@pascaldeclercq283
@pascaldeclercq283 3 года назад
Nice demo! Just tiny error I think: at 19:15 you are querying for the oldtimer members, but the query used actually looks for the newbies instead.
@nove1398
@nove1398 3 года назад
Very excited to try out these new EF Core features. Keep on with the updates!!
@markrobinson2648
@markrobinson2648 3 года назад
I've used every version of EF over the years and I've finally come to the conclusion that I simply don't need an ORM. I see no benefit. I now prefer to use something like dapper to query the database and create simple objects. It's lightweight and very fast and I can write sql as my query. I find ORMs like EF to be so restrictive.
@Spivonious
@Spivonious 3 года назад
I've come to the same conclusion. I spent too many hours banging my head against EF trying to figure out how to map my clean domain model to a messy legacy database structure. In the end, I gave up and used Dapper and mapped manually. Yes, I lose change tracking and lazy loading, but I actually deliver business value.
@AGeeksTouch
@AGeeksTouch 3 года назад
Same!
@FINSuojeluskunta
@FINSuojeluskunta 3 года назад
I am a junior dev still in college but I can say that I have had enough issues with EF Core that I now just use it for writes and stick with Dapper for queries. It does help with migrations and db generation but I'm not sure if Dapper has options there now. I don't trust these contrived examples. With EF you say darn how do I do this thing I should surely be able to do and you check github and it's a request 8 years in the making...looking at you filtered includes and many-many relationships...at least the latter had a proper workaround.
@rajon69
@rajon69 3 года назад
I'm using efcore in a generic repository pattern, but I'm using it only for cruds. For complex queries I prefer dapper too.
@RasmusSchultz
@RasmusSchultz 3 года назад
Like every ORM throughout history, they're chasing rainbows. With every generation of every ORM, it's all "this time it's going to be great" - up until reality kicks back in, which is usually half way through a big project with a deadline. Just don't. Don't buy into the ORM delusion. It's fundamentally not a good idea, and no amount of clever features is going to fix this. Give me query builders or give me death.
@leandrocasas90
@leandrocasas90 3 года назад
This is one of my favorites from the whole event. Very information dense and very well explained!
@EricOuellet2
@EricOuellet2 3 года назад
Great and clear explanations at a nice beat. BUT I have a lot of difficulty to be agree with you about using one table per hierarchy. It goes directly against "Normal form" (Boyce-Codd) and every advantages it has. Yes performance could be better in some case using one table oinly but it could also be less in some other cases. Plus, you have a lots of disadvantages of having unusefull fields in some cases and some other in other cases. You can loose a lot doing so in many ways (integrity, space, some performance on full table scan, etc). It could really become a huge mess.
@javadborhani7838
@javadborhani7838 3 года назад
Shay Rojansky => this is the style I like someone to explain. thanks
@masterdirin
@masterdirin 3 года назад
Came across a wierd phenomenon in EF Core 5.0 . . . class A; class B : A; class C; c = new C; c.b = new B; _context.Add(c); _context.SaveChanges(); // after saving changes let's check what we have in c.b // if B is configured as TPH then c.b is equal to b // if B is configured as TPT then c.b is null, but b is OK
@washington6986
@washington6986 3 года назад
You explain things very well, Jeremy :)
@ARCHNOX75
@ARCHNOX75 3 года назад
Im happy to see the features of EF are now into EF Core 5. Its like a christmas day
@rey6253
@rey6253 3 года назад
The new way of joining tables is just amazing. Thanks a lot for the improvement.
@jeffbarnard348
@jeffbarnard348 3 года назад
Can you serialize these many:many relationships? How do you handle self referencing loops?
@MusicalGeniusBar
@MusicalGeniusBar 3 года назад
I would just like to point out how easy ef core is once you learn it , it makes a lot of sense
@JamesHarrisonHaribo
@JamesHarrisonHaribo 3 года назад
As usual, another great release of EF-Core. Thank you and your team for the great work. All these features are grealty welcomed by myself, especially of course, the many-to-many. Also, fantastic succinct presentation, obviously well-planned.
@naval207
@naval207 3 года назад
We can't execute the raw query why this feature is missing ? We have to use dapper ORM ?
@huntersMoon01
@huntersMoon01 3 года назад
how you do left join and then group by ?
@marziehkhanbabazadeh1411
@marziehkhanbabazadeh1411 3 года назад
very excited to use EF Core 5
@JustinMinnaar
@JustinMinnaar 3 года назад
Excellent and clear talk, thank you. At 20:00, line 30, should not oldTimers be those before the date, not after?
@alexnikolof
@alexnikolof 3 года назад
Many to Many relationship as it is shown on the new WAY of doing it, is actually limiting the access to the data only to EF, and is using a lot of CPU and memory in real time when the query is performed. This can lead to problems with the performance especially when the dimensions of the data becomes hundreds of giga per table.
@saransh8236
@saransh8236 2 года назад
amazing update and great explanation
@rukascool
@rukascool 3 года назад
Lovely features as always, thank you microsoft! Hobby projects where perf doesn't matter, ToTable inheritence is really sweet.
@taddeustentakel8598
@taddeustentakel8598 2 года назад
do u think EFCore 5-6 is not really useable for medium-tolarge business projects??
@ernestmfakudze
@ernestmfakudze 3 года назад
Thanks guys, some pretty cool stuff there! Am looking forward to working with these new features.
@ManuelHernandez-zq5em
@ManuelHernandez-zq5em 3 года назад
I wished EF Core 5 could update a record without querying it first. I wonder why this feature is missed.
@willinton06
@willinton06 3 года назад
I’m pretty sure you can do that
@maximilianocalderon7856
@maximilianocalderon7856 3 года назад
I have a problem configuring SQL Server in the function AdddbContext, i can't use the options.UseSQLServer function to insert my connection string, there is some reference or extension im missing?
@iamearly8176
@iamearly8176 3 года назад
I have not been able to target net standard 2.x in Winforms, the only way I have been able to use Net Standard 2.x in WinForms is from a class library.
@fullemptiness
@fullemptiness 3 года назад
Typo at 2:12, POCO (Plain Old C#/CLR Object) However I don't know why it is old 😅
@naval207
@naval207 3 года назад
Very bad support with Oracle database . scaffolding generating wrong data type column. number(4) converting in bit instead of int
@mariselvam6702
@mariselvam6702 3 года назад
very excited to use EF Core 5 :)
@shubhamtiwari4078
@shubhamtiwari4078 3 года назад
Very Well Explained , I was waiting for that many to many relationship change , excited to use EF Core 5.
@Lindembergz
@Lindembergz 3 года назад
My error with me is : PM> dotnet ef migrations add migracao1 Build started... Build succeeded. Unable to create an object of type 'ApplicationDBContext'. For the different patterns supported at design time, What happen ? .Net core 5
@GrahamChowder
@GrahamChowder 3 года назад
What would be really cool: if you could take a sql query and produce an EF query....
@kamarchand
@kamarchand 3 года назад
Where can we find this demo?
@ericblankenburg
@ericblankenburg 3 года назад
It would be great if EF Core supported arrays of primitive types for Cosmos DB.
@dmytroshchotkin2939
@dmytroshchotkin2939 2 года назад
Oh, so TPC is not introduced yet? =(
@aarontheeranitpongtongmuan233
@aarontheeranitpongtongmuan233 3 года назад
Is there any link to an example code for the second part by Shay Rojansky ? Thanks.
@raymondbrink
@raymondbrink 3 года назад
Is TPT coming to EF Core 3.1? I can't imagine it being hard to backport it, so .NET Framework 4 users can use it in their projects as well. That would give them a great head start to at least port the data access and data logic layers of their legacy applications to .NET Standard 2.0 opening their applications for future migration to .NET5.
@KillianKhoo
@KillianKhoo 3 года назад
Excited to that TpT feature.
@sporadics
@sporadics 3 года назад
Wish there is a more intuitive way to query the children collection
@Finezzato
@Finezzato 3 года назад
How on earth the second time you run it didn't stop on the breakpoint?
@martingruebler443
@martingruebler443 3 года назад
Ef doing many to many, I can not believe it
@Tontelz
@Tontelz 3 года назад
Guys thank you for the demo, this is really informative. Amazing work.
@lollo4711
@lollo4711 3 года назад
@19:51 - Line 30: I always liked the T-SQL BETWEEN-Statement. Is an Extension possible for "MemberSince" to be used inside the lambda-expression? like: m.MemberSince.Between(a,z)
@sneajy2030
@sneajy2030 3 года назад
Wouldn't that be about linq instead of entity?
@reneschindhelm4312
@reneschindhelm4312 3 года назад
That's acutally interesting and I'd like to know if EFCore has improved in that area. It could be an extension method / wrapper around IQueryable. I think that if the expression engine can't translate it to SQL you will end up with an error or, even worse, the deferred execution stops and you'll pull way more data to the client than you expected, applying all the remaining operations on the client side instead.
@juancarlosgonzalez9722
@juancarlosgonzalez9722 3 года назад
These guys are wicked smart. Good stuff.
@dotnetdevni
@dotnetdevni 3 года назад
What about custom fields for all tables this simple feature has been lacking for ages.
@ICanSeeSharp
@ICanSeeSharp 3 года назад
What exactly do you mean? What are "custom fields"? Doesn't make any sense from c# or sql perspective.
@adamc1694
@adamc1694 3 года назад
@@ICanSeeSharp To be able to create a 'Profile' for a filed? For example firstname, lastname, companyname....instead of doing a repeating annotation (max length, required...) on each xxx-name, why not to be able to create a custom profile and apply to all these xxxname.
@adae8481
@adae8481 3 года назад
@@adamc1694 If I understand correctly what you want, you can create a "Name" class and use it as a owned entity for the main table, and you can configure it using the same configuration everywhere check this out github.com/dotnet/efcore/issues/15681#issuecomment-537789913 I've been using it for a year now :) and you can automate the configuration (even without owned entities) for all tables using reflection and the modelbuilder
@mohamedsalah324
@mohamedsalah324 3 года назад
Great and simple explanation
@mohammednhari1737
@mohammednhari1737 3 года назад
thank you what about azure functions with dotnet 5?
@peddapetavenkatesh3854
@peddapetavenkatesh3854 3 года назад
.net 5 is same like .net core 3.1 major changes are c# 9 and internally performance enhanced
@mosialive
@mosialive 3 года назад
WOW! I am loving this... Thanks Guys!
@mjonausk
@mjonausk 3 года назад
Yikes a discriminator is VARCHAR(MAX). You cannot index a varchar(max). Could cause speed problems later on.
@bx0925
@bx0925 3 года назад
Its insane to use class table mapping things.
@brendanmurphy7509
@brendanmurphy7509 3 года назад
I know! New to EF but not data modeling and... why does this feature exist??
@travisarndt853
@travisarndt853 3 года назад
Using Sublime over VSCode?
@mstya13
@mstya13 3 года назад
oh jesus I spent 8 hours today debugging my queries, where were you be earlier?
@mrlidingo999
@mrlidingo999 3 года назад
Isn't the oldTimers query reversed? Shouldn't the "oldTimer" be those with a membership < new DateTime(2000..... ???
@saffyappstore8476
@saffyappstore8476 3 года назад
unfortunately there is still no improvement in database first approach as we have to re-create whole entities for just small change
@ericblankenburg
@ericblankenburg 3 года назад
Comos Db supports arrays of privative types but Entity Framework Core Cosmos Db does not. It's a huge issue.
@ibnfpv
@ibnfpv 3 года назад
Great demo. really cool and needed features
@EmilianoMusso
@EmilianoMusso 3 года назад
Great features, thank you!
@TSaqo
@TSaqo 3 года назад
Great but. why don't you fixed migration issue for .net standard 2.1
@namitavpani6133
@namitavpani6133 3 года назад
Nice Video
@sumod8898
@sumod8898 3 года назад
thank you for demoing something.
@daviddonadze221
@daviddonadze221 3 года назад
Love EF
@JohanDG7
@JohanDG7 3 года назад
How does the MemberSince property automatically "know" it should store creation date by just declaring it? :)
@abcdeabcdeable
@abcdeabcdeable 3 года назад
It doesn't he is just showing you how to add a field to the m2m table. Btw you can add property .HasDefaultValueSql("getutcdate()") which is outside this topic
@KenzoArts
@KenzoArts 3 года назад
When can i find the source code for reference ?
@chrisnurse6430
@chrisnurse6430 3 года назад
GraphQL and real time apps - should be native by now
@matthiasauswoger7994
@matthiasauswoger7994 3 года назад
8:24 This package (www.nuget.org/packages/ObjectStore/) can do this for years already.
@cas4425
@cas4425 3 года назад
Really nice👍🏼
@AlexeyMarkov
@AlexeyMarkov 3 года назад
Lacking of support in azure functions makes ef core 5 useless
@wordonice4457
@wordonice4457 3 года назад
When will EF Core be compatible with MongoDB and other NoSQL DBs???
@theanachronism5919
@theanachronism5919 3 года назад
Aren't there community providers already?
@carlosantoniomarroquin5520
@carlosantoniomarroquin5520 3 года назад
Pretty cool
@petropzqi
@petropzqi 3 года назад
Many to many!!!!!
@canersarigul8975
@canersarigul8975 3 года назад
I don't see any new feature, they all already exists :-)
@BenHayat
@BenHayat 3 года назад
Jeremy, since EF5 supports NoSQL CosmoDB, is there plan for EF to support MongoDB?
@JeremyLikness
@JeremyLikness 3 года назад
We're considering it. It was the most requested new provider so there's certainly demand.
@BenHayat
@BenHayat 3 года назад
@@JeremyLikness Awesome! Not to put you on spot, it's only for me to prioritize my development and my roadmap, *IF* the decision is approved, what would be a rough estimate that it will be GA? Thanks for the reply
@JeremyLikness
@JeremyLikness 3 года назад
@@BenHayat Too early to make any commitments or even guesses as to a timeframe or whether there will be work there.
@BenHayat
@BenHayat 3 года назад
@@JeremyLikness Thanks!
@tranceyy
@tranceyy 3 года назад
So which is better, EF or NHIBERNATE?
@youtubecreaters-g6s
@youtubecreaters-g6s 3 года назад
Great
@zeushi
@zeushi 3 года назад
Awesome.
@stefangabor5985
@stefangabor5985 3 года назад
I would have liked to see how could we integrate and debug some of these new features within a containerization approach type of programming. Remember, very few people can actually write good code. Just writing code it is not quite enough today, in 80’s and 90’s is yes.
@leakyabstraction
@leakyabstraction 3 года назад
Add configuration capability to Owned() and selectively ignorable global query filters to Fluent API, or a bunny will die.
@p46288
@p46288 3 года назад
9:35 LogTo
@offir711
@offir711 3 года назад
Just upgraded ef core 2.2 to ef core 5 and I don't recommend anyone to do it, so many bugs and things that don't work as expected, you can see the issues section in github here: github.com/dotnet/efcore/issues Every few minutes someone is submitting a new bug including my self. Even though ef core 5 solves a few issues that were problematic with efcore 2.2 I still prefer the old version due to many bugs efcore 5 has.
@juanalfredogutierrez8663
@juanalfredogutierrez8663 3 года назад
I definitely stick with ADO.NET for transactions and for DAPPER queries
@FixingGunsInAir
@FixingGunsInAir 3 года назад
12:00 Microsoft Developer using Firefox on a stream... How? :)
@marianoguru2449
@marianoguru2449 2 года назад
Try not to reinvent the wheel and simplify thing using current theory, not changing the existing one.That 's why javascript is gaining users and you are loosing ones.
@Spivonious
@Spivonious 3 года назад
I hate these trivial examples. An ORM such as EF gives very little benefit if it's a 1:1 mapping between classes and DB tables. I would love to see a complex mapping scenario where data for one class is coming from multiple database objects, or vice versa where one table gets mapped into multiple classes.
@rojansky1
@rojansky1 3 года назад
EF Core does support table splitting, where multiple classes are mapped to a single table: docs.microsoft.com/en-us/ef/core/modeling/table-splitting
@fffhshf345
@fffhshf345 3 года назад
hibernate all the way
@PeterBuchmann
@PeterBuchmann 3 года назад
Shocking indeed. We use a different mapper and have been able to use all these features with C# since more than 15 years!!! I used EF in a project about 5 years ago and experienced so many missing features that we haven't used EF since. EF is catching up and now has features that I miss in our tool. Still: In many scenarios EF is clearly better than native database programming without a mapper.
@fffhshf345
@fffhshf345 3 года назад
@@PeterBuchmann I does not matter, in 10 years AI will write the code, and we both will be jobless/ forced to change job :D
@PentarexBG
@PentarexBG 3 года назад
2021 and explaining Entity framework like they invented the hot water.... hibernate is in java since 2010 and other ORMs are in JS since 2015....
@Mike-mo4rn
@Mike-mo4rn 3 года назад
It seems C#, .NET continue to become more and more, unnecessarily complicated. One of the biggest mistake EF creators/coders have made is that they assume coders want to create a database using C#. EF now appears to be more bloated than ever, with too many classes. Shortest code is not always the shortest, and is not always the easiest to maintain. By increasing the learning curve the authors of this bloated software are simply shortening the lifespan of the products. Coders get easily excited with everything new, it does NOT mean the "new" stuff is actually easy to use or offers any benefit. The simplest solution almost always is the best solution.
@RasmusSchultz
@RasmusSchultz 3 года назад
Yes. Less is more. Unfortunately, it takes a long time for most developers to arrive at this kind of clarity. Distractions like yet another ORM making bold, unrealistic claims adds years of wasted learning and unlearning to this path. I wish I knew how to guide new developers around all these obstacles, but I guess maybe it's just a painful rite of passage that every poor misguided developer has to get dragged through.
@FilipCordas
@FilipCordas 3 года назад
Well no it really isn't complex EF is great when you want a small database setup quickly write your domain model and bum you have a database backing it up. You really shouldn't use it to map a gigantic database with hundreds of tables or create such databases with it. Like you can have an App running on docker or web app in five minutes with an sql database or cosmosdb and cicd,that all you should need for a small service.
@BrettFleming
@BrettFleming 3 года назад
Wow, you can really tell how much they hated adding TPT to core (#1 request for 4+ years). He just happens to skip the mortal sins of TPH, such as the db no longer able to enforce nullable operations. With TPH you can't have any of the properties on ExternalUser be non-nullable; By design they have to be nullable in the database. I appreciate that Shay like's First Normal better than Third Normal, but for heavens sake don't tell US we are doing it wrong. I hope the SQL Server team was watching this, I'm sure they all had a grand laugh when you said "joining tables is hard"... Lol.
@rojansky1
@rojansky1 3 года назад
Re nullability enforcement with TPH, that's pretty trivial to achieve with check constraints (github.com/dotnet/efcore/issues/20931 tracks EF doing this for you). Other than that, the intention wasn't to tell anyone they're doing it wrong :) But over the years we've definitely seen TPT designs with deep hierarchies, causing very real perf issues, because of normalization ideals - just be aware of what you choose is all I'm saying.
@sneajy2030
@sneajy2030 3 года назад
Slow down Shay 🙄 anyway good job guys
@paulalves966
@paulalves966 3 года назад
Still way far behind NHibernate.
@PentarexBG
@PentarexBG 3 года назад
WPF? 2020? Come on guys, you can do better than selling WPF in 2020... even 2021
@oldfootage
@oldfootage 3 года назад
This looks like code first. If you are interested in data first don't waste your time with this video.
@tcfialho
@tcfialho 3 года назад
Better late than never...
@lakersgogo
@lakersgogo 3 года назад
Why not just leave the database alone as it is. If you want a table just create a table in the DB and then query it in the code, simple and easy to understand! The EF problem nowadays is trying to do everything to a database. Before you could create a table properly in the EF code you will have to study like 1 hour manual to accomplish 5 min job. Of course it will be powerful when you have like 500 pages manual, but before that you will have to have a good memory and patient to remember all of these. A good tool for me is to decrease but not to increase the complexity of my job...
@flogginga_dead_horse4022
@flogginga_dead_horse4022 3 года назад
One of the main points of an ORM is so developers don't have to be SQL experts as well. If you are already a DBA then you don't need this.
@SayWhaaaaaaaaaaaaaaaaaaaaaaat
@SayWhaaaaaaaaaaaaaaaaaaaaaaat 3 года назад
OH PLS what next generation??? It's sooo next generation you cant even write raw sql and select 1 column! SO next generation that if your primary key is LONG you cant use int without cast to use Method Find.
@iamsandakelum
@iamsandakelum 3 года назад
That awkward moment when you're using Firefox but not your own Microsoft Edge.
@aslamiqbal3435
@aslamiqbal3435 3 года назад
Shay started a race of coding. Slowdown man I can't sync with your code.
@hateterrorists
@hateterrorists 3 года назад
Why are my navigation properties null after restarting the application? Do I have to manually connect them again? This is with the many to many relations.
Далее
Modern Entity Framework: A Tour of EF Core 5.0 pt 1
23:59
C# Source Generators - Write Code that Writes Code
28:36
Whoa
01:00
Просмотров 22 млн
I Built a WATERPARK In My House!
26:28
Просмотров 14 млн
Turns out REST APIs weren't the answer (and that's OK!)
10:38
Brutally honest advice for new .NET Web Developers
7:19
microsoft doubles down on recording your screen
10:00
8 await async mistakes that you SHOULD avoid in .NET
21:13
Modern Web Development with Blazor & .NET 5
29:02
Просмотров 62 тыс.
Whoa
01:00
Просмотров 22 млн