Entity Framework Core 8: Improved JSON, queryable collections , and more… | .NET Conf 2023

Ғылым және технология

Entity Framework Core 8 (EF8) introduces several new highly-requested features, as well as major underlying infrastructure changes setting up EF Core for future enhancements. The new EF8 features include:
Chapters:
00:00 Welcome
00:44 Document vs Relational Databases
02:07 Use JSON to send multi-value parameters for translations such as `List.Contains`
03:15 Mapping and querying collections of primitive types
10:55 Mapping to JSON columns using SQLite
13:53 Leverage the new support for performance improvements, e.g. when using Contains
16:42 Use C# structs with DDD value object semantics in your classes while still splitting the contents to multiple columns in the database
23:58 Raw SQL queries for unmapped types
27:53 Official `HierarchyId` support for EF Core on SQL Server
33:29 In Summary Improvements to lazy loading and the change tracking APIs
36:02 Many small enhancements to existing features
aka.ms/ef8-whats-new
36:26 A MongoDB Provider for EFCore
aka.ms/efcore-mongodb
38:00 Thanks
- Further JSON support in relational databases, including:
- Use JSON to send multi-value parameters for translations such as `List.Contains`
- Mapping and querying collections of primitive types
- Mapping to JSON columns using SQLite
- Leverage the new support for performance improvements, e.g. when using Contains
- Use C# structs with DDD value object semantics in your classes while still splitting the contents to multiple columns in the database
- Raw SQL queries for unmapped types
- Official `HierarchyId` support for EF Core on SQL Server
- Improvements to lazy loading and the change tracking APIs
- Many small enhancements to existing features
Join Arthur Vickers and Shay Rojansky from the EF team for a tour of these new features, with demos showing the JSON mapping and queries, and value type support.
Download .NET 8 - aka.ms/get-dotnet-8
Hack Together - aka.ms/hacktogether/dotnet
Learn collection - aka.ms/learn-dotnet-8
.NET 8 Survey - aka.ms/dotnet-survey
Local Events - aka.ms/dotnetconf-local-event
Hero blog - aka.ms/dotnet8blog
Blog: aka.ms/dotnet/blog
Twitter: aka.ms/dotnet/twitter
TikTok: aka.ms/dotnet/tiktok
Mastodon: aka.ms/dotnet/mastodon
LinkedIn: aka.ms/dotnet/linkedin
Facebook: aka.ms/dotnet/facebook
Docs: learn.microsoft.com/dotnet
Forums: aka.ms/dotnet/forums
🙋‍♀️Q&A: aka.ms/dotnet-qa
👨‍🎓Microsoft Learn: aka.ms/learndotnet
#dotnet

Пікірлер: 42

  • @davidmarron109
    @davidmarron1098 ай бұрын

    I wasn't sure this would be worth 38 minutes of my life, but this is definitely worth it. Relational DBs solved a huge subset of problems, Doc DBs solved a different subset, and now you've taken a huge step towards merging both. This is important work you've done.

  • @MrStupiuno
    @MrStupiuno8 ай бұрын

    I love the new inline primitive array support that works without any config!

  • @clouddeveloper4549
    @clouddeveloper45498 ай бұрын

    Well done! Solving real world problems and doing it in an elegant yet powerful way!

  • @ShakeelAhmed-xo3xz
    @ShakeelAhmed-xo3xz8 ай бұрын

    Wonderful new features, I have been using EF/EF Core for many years, but this video surprised me and my future work and projects shall benefit from this knowledge. Thanks you both.

  • @IndigoDalliance
    @IndigoDalliance6 ай бұрын

    Wow! Stunning! So glad I didn't miss this video.

  • @aqualinespirit90
    @aqualinespirit908 ай бұрын

    17:20 , this is really good, currently have to use predicates for that, glad it's been added to EF8.

  • @kabal911
    @kabal9118 ай бұрын

    The best ORM in any language just keeps getting better ❤

  • @tarsisf8173
    @tarsisf81738 ай бұрын

    Fantastic job!

  • @gustavnilsson6597
    @gustavnilsson65978 ай бұрын

    You guys are rockstars!!

  • @derDooFi
    @derDooFi8 ай бұрын

    i love these guys! wish this were longer, lol

  • @janakaaravinda2507
    @janakaaravinda25077 ай бұрын

    This is amazing thank you..

  • @milada424
    @milada4248 ай бұрын

    this is awesome, great work thank you !

  • @keinegutennamen
    @keinegutennamen8 ай бұрын

    Definitely one of my favorite talks.

  • @dvanrooyen1434
    @dvanrooyen14348 ай бұрын

    Hey guys - before we had table params we used that hack of using xml to pass in lists, - its not a new technique...

  • @onlyice
    @onlyice8 ай бұрын

    Brilliant presentation.

  • @pureevil379
    @pureevil3798 ай бұрын

    Brilliant

  • @OggVorbis69
    @OggVorbis697 ай бұрын

    Excellent work,. all the time it was said that RDBMS do not have concept of arrays I was thinking ... Postges?? the end clarification that the native capabilities are used there was just the cherry on top of very impressive work. Well done guys, I just enjoy seeing you two on my screen. Congratulations on the cool set of examples and their order. I was thinkin that the sample with at least one visit will be better written with IS NOT NULL, with more than one will be where the Visits column value length is > than the length of textual form of a single date, etc. but those are hacks in comparison with your clear / canonical solution. Hacks may be faster but the understandable and always working code is better, even when generated. Thanks a lot. I may just start using EF now. It is good enough for me not writing all my SQL by hand. And that is something keeping in mind I am doing it since SQL server 4.2 Again, thanks a lot. Your work should be a pleasure to use.

  • @SchattenPV
    @SchattenPV5 ай бұрын

    Can you please give me a link to the video you mentioned @22:05? I'm very interested about the join aspect because we have some perf problems in our app with this topic

  • @mamg301988
    @mamg3019888 ай бұрын

    Excellent, I'm going to update the version

  • @jaiderariza1292
    @jaiderariza1292Ай бұрын

    @ajcvickers I wonder how we can handle discriminator with json, example if address in UK may have different format that address in US and we use like interface (IAddress) or base abstract class , silly sample but I wonder if this can be achieve by the new EF core json support?

  • @asdasdaa7063
    @asdasdaa70634 ай бұрын

    I love these guys so much, Microsoft's best speakers! Thanks for this love EF core!

  • @Joooooooooooosh
    @Joooooooooooosh7 ай бұрын

    Unfortunately anything with JSON arrays can't be effectively indexed. Most of these queries will perform terribly on any large tables.

  • @HikingUtah
    @HikingUtah6 ай бұрын

    What version of SQL Server first supported keywords such as OPENJSON? This is my first time hearing about it.

  • @zapaneer
    @zapaneer7 ай бұрын

    Cool stuff. The section about collections of simple datatypes being mapped as JSON, does that apply to the Postgresql variant as well or does it natively support the Postgresql implementation of arrays (which I believe would be more efficient)? Maybe it is a question for the NPGSQL guys...

  • @zapaneer

    @zapaneer

    7 ай бұрын

    Sry, It got answered later on by Shay

  • @jeremyflowers8908
    @jeremyflowers89087 ай бұрын

    Why are you guys not using CTEs or top instead of first for consistency when working with JSON (I'm presuming you are borrowing from Observables)? Also where are you storing the metadata to know what the composition of the JSON columns are within the database?

  • @pascalmbamungu3432
    @pascalmbamungu34328 ай бұрын

    What's the datatype for the column holding the json array?

  • @GregMontoya1
    @GregMontoya18 ай бұрын

    Automatically converting a .NET primitive array to a JSON formatted array as a parameter for a query is pretty nice. Now I won't have to do this manually.

  • @maxd5661
    @maxd56618 ай бұрын

    We have similar code running on SQL Server in production without EF (using direct SQL) and performance on larger data sets (few hundred thousand records) is terrible. Stay away from this on SQL Server if you are at all concerned about performance. SQL Server at its core is very behind the curve on native array and document support. This should work great on PostgreSQL though!

  • @OggVorbis69

    @OggVorbis69

    7 ай бұрын

    Yeah, it is cool to write the query but performance is always an issue when the volume comes.

  • @Joooooooooooosh

    @Joooooooooooosh

    7 ай бұрын

    Exactly. So much work was put into a feature that is pretty much an antipattern in the real world.

  • @maxd5661

    @maxd5661

    7 ай бұрын

    @@Joooooooooooosh I mean at least it will actually work well on PostgreSQL. Maybe when SQL Server catches up to 2023 with native array and document support this will be a thing, but until then, this is a total waste of time of the EF team.

  • @infotips2475
    @infotips24756 ай бұрын

    How to handle it when 'Address' has another object? Does anyone have any ideas for configuration?

  • @thedreadedgman
    @thedreadedgman8 ай бұрын

    is JSON parsing faster then query planning?

  • @xtonetware5493
    @xtonetware54935 ай бұрын

    will this work exact same way for postgre sql

  • @goodstas
    @goodstas7 ай бұрын

    Thank you for this video. Great features. Could you provide the code of your presentation, please?

  • @savopejovic25
    @savopejovic258 ай бұрын

    This is not just SQL Server? Oracle has no support yet...

  • @gunnarliljas8459
    @gunnarliljas84598 ай бұрын

    Cool, but just mentioning "perf" so briefly kind of falsely gives the impression that this JSON support is usable in anything but extremely small databases. It isn't. The JSON_VALUE thing can be indexed, but the collections not so much. PostgreSQL kind of handles it. The contains optimization is great, but something that has been solved by other OR mappers years ago. Still, good to see.

  • @ericblankenburg
    @ericblankenburg8 ай бұрын

    But you don't support Cosmos Db hierarchical partition keys. You always seem to be way behind the curve when it comes to Cosmos Db.

  • @rivercitron2000
    @rivercitron20008 ай бұрын

    What could go wrong

  • @codefoxtrot
    @codefoxtrot8 ай бұрын

    Talk about flying too close to the sun... jeez, just bring a plague down on us all, why don't you?!

  • @ivanz6368
    @ivanz63685 ай бұрын

    what a useless video....

Келесі