CRUD w/ Blazor in .NET 8 🔥 All Render Modes (SSR, Server, Wasm, Auto), Entity Framework & SQL Server

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024

Комментарии • 190

  • @ghaznavipc
    @ghaznavipc 10 месяцев назад +8

    what a mess this Blazor is doing? 😵‍💫
    I'm confused. I know webapi, mvc and razor pages but this is another level of complexity! every thing is everywhere! why?!?

  • @christiantricarico
    @christiantricarico 11 месяцев назад +61

    No hate comments. Mistakes and compile errors come to all of us when trying new stuffs. Thanks for this real dev journey.

  • @vivekkaushik9508
    @vivekkaushik9508 11 месяцев назад +47

    I learn more from Patrick, Milan and Nick chapsas than in my job 😂. Thanks for creating these videos for us Patrick. I wish you channel blow up very soon in blazor and dotnet community.

    • @PatrickGod
      @PatrickGod  11 месяцев назад +10

      Your words mean so much to me, truly! It's an incredible feeling to know that the content is genuinely helping you, especially when compared to your job experience. 😂 I'm honored to be mentioned alongside Milan and Nick Chapsas. Your support is a huge motivator for me to keep going. Cheers!

    • @jacobphillips9235
      @jacobphillips9235 10 месяцев назад +1

      same

    • @rnavedojr
      @rnavedojr 5 месяцев назад

      Ah yeah, they won't take you in a better position than them.

    • @sumeshk2653
      @sumeshk2653 5 месяцев назад

      exact same 3/4 people I admire. Fourth is "rawcoding". He is good as well.

  • @oncalldev
    @oncalldev 10 месяцев назад +22

    Don't worry about the video length - watched it all. I enjoy the real time notion of working through a project, errors and all. The one thing I really do miss when going through new concepts on RUclips is a white board approach where you step back from the code and just diagram things out to get a better overall view of how it all works. Thanks for the video.

  • @Manlyman789
    @Manlyman789 11 месяцев назад +13

    It would be great if you could create a video on how to handle security, and specifically how the AuthenticationStateProvider should be used when using RenderModeInteractiveAuto. I come from a Blazor WASM background so it would be great to know if there are any caveats to using the AuthenticationStateProvider with RenderModeInteractiveAuto.
    Do we need to have two different AuthenticationStateProviders for the Server and WASM project or can the WASM project's AuthenticationStateProvider cover both the Server and Client project's authentication states?

  • @guillermomazzari8320
    @guillermomazzari8320 11 месяцев назад +3

    My dude, thanks for sharing such awesome content! It might seem confusing, but I actually like this new architecture!

  • @sergevanmeerbeeck9988
    @sergevanmeerbeeck9988 11 месяцев назад +21

    This is a great video. I like the non-rehearsed style of videos where you see mistakes being made. You learn the most from mistakes

  • @MrTommerino
    @MrTommerino 11 месяцев назад +2

    These videos are really great, I'm learning a lot here! I'd love to see one on how to publish the project to Azure that also covers the publising and updating an SQL database. I've been looking for tutorials that describes migrations but they're all focused on MVC projects and I can't get them to work in Blazor.

  • @GarethDoherty1985
    @GarethDoherty1985 11 месяцев назад +4

    Sorry if I missed your explanation of it, but why do you have to setup the HttpClient on the server project as well? Its only the client that needs to make HTTP calls to the server?

    • @muheebar-rahman8294
      @muheebar-rahman8294 10 месяцев назад

      That is also my question

    • @tamaslencse3468
      @tamaslencse3468 3 месяца назад

      I coded the same project (kinda) while watching the video, and I could not find an explanation for the HttpClient on the server. The app works with server's HttpClient commented out from Program.cs. Anyway, wanted to ask the same...

  • @happytrackvideo
    @happytrackvideo 11 месяцев назад +5

    I do see much change from blazor 7. I am not sure why blazor 8 template doesn't include api controller, datacontext, server service, shared project with common objects, wasm project with client service template with httpclient factory. They are essential elements of any blazor app.

  • @golosbezdoka
    @golosbezdoka 9 месяцев назад +4

    You are my favorite Blazor tutor. It's very chilly to watch how you learn it making these tutorials. Unlike others try to implement everything ASAP to show off :D

  • @silentwindstudio
    @silentwindstudio 8 месяцев назад +2

    Jesus Christ... how Microsoft manages to overcomplicate things that much? In PHP you can, in just a few lines, have a complete CRUD, now in blazor you need 500 files and a lot of complicated code to do the same D=

    • @mq9032
      @mq9032 8 месяцев назад +1

      i have huge headache trying to figure this out bro

  • @giampaolotucci5897
    @giampaolotucci5897 11 месяцев назад +2

    Great !

  • @jeverydk
    @jeverydk 11 месяцев назад +5

    For the love of all thats holy, thank you Patrick !
    I wish for chapters in the future. If i get around to doing the tutorial myself, i will post it here for others.

  • @Felix-og7pd
    @Felix-og7pd 6 месяцев назад +1

    None - interactivity type, is client side rendering f
    SSR vs stream rendering, simulate async js loading vs fast but on page reload
    CtrlShiftC - Network - WS - Wasm webserver - WebAssembly

  • @Felix-og7pd
    @Felix-og7pd 6 месяцев назад +1

    why blazor dont have controllers added by default?
    Check web socket connection: Network - WS - Messages

  • @dejan.demonjic
    @dejan.demonjic 9 месяцев назад +1

    Hmm... just a question. Now, I'm in my mobile, so please understand me here xD
    In your @page "games" you introduced button and click event just to navigate to edit-page, thus you needed a new button component with server render mode, which resulted connecting to web socket in your games page which is static ssr.
    My question is: why you didnt made a link except of a button with event and avoided web socket connection in games page?
    Blazor team introduced enhanced navigation, and I think probably for scenarios like this one.
    PS. I just started discovering Blazor in NET 8, so I didn't jumped in that train as I should do (yet).
    Btw, great video. Keep publishing

  • @reikoleci4689
    @reikoleci4689 9 месяцев назад +1

    Coming from Reactjs, Building UI components seems very limiting and difficult to combine components into one another -- anw im learning So I could be wrong

  • @MohammadKomaei
    @MohammadKomaei 11 месяцев назад +2

    Will Microsoft add a template like this 3 projects of yours?

  • @ahmetsarkaya9203
    @ahmetsarkaya9203 11 месяцев назад +2

    I don't know much about blazor yet but It would be great if we could use rendermode directly in the element like

  • @abhishekjadhav9289
    @abhishekjadhav9289 10 месяцев назад +1

    I wish if you could have thought of keeping course prices economical to everyone. The price you are charging is exorbitant. I really like your way of teaching, but I don't have so much money to pay your fees to signup for your course.

  • @joaogabrielv.m328
    @joaogabrielv.m328 11 месяцев назад +7

    Great video, as always! Really excited to see .NET 8 final release :D

    • @PatrickGod
      @PatrickGod  11 месяцев назад +3

      Thank you so much!
      Me, too. 😜

  • @DavdOtonielRosarioSerrano
    @DavdOtonielRosarioSerrano 8 месяцев назад +7

    awesome video bro keep going

  • @pashadjoystick
    @pashadjoystick 5 месяцев назад +1

    super clear english pronansiation - i face with it rarely in nothern america and g-britain. i am from ukraine. where are you from?

    • @PatrickGod
      @PatrickGod  4 месяца назад

      Thanks a bunch! I'm from Germany. 😊

  • @SIBUK
    @SIBUK 11 месяцев назад +1

    Why do we have to put all the services in a shared project now? Why can we not just have the client services on the client and the server services on the server like before? I dont understand.

    • @rustyprogrammer
      @rustyprogrammer 11 месяцев назад +2

      You can (actually, imho you should), but you do need the interface definition in the shared project

  • @georgebelletty7861
    @georgebelletty7861 11 месяцев назад +2

    A great video Patrick. That must not have been 100% fun while you were recording that video!!! These are big changes, good changes. Keep em coming :)

  • @sikor02
    @sikor02 11 месяцев назад +1

    How about having service only on the server side, and have all controls/pages in Client project in order to utilize the "auto" capabilities? The pages/controls in the client project would call the api endpoints so you wouldn't need to create another service just for client side. Today I've experimented with having separate class library with controllers and dtos. It was supposed to act like your "shared" project. But unfortunately it's not possible if for example you inject SigninManager in the controller (won't go into details here). I like having one .cs file per controller where I also store DTOs, but as I see I would need to have a shared project with DTOs only and implement controller methods inside the server project, which I wanted to avoid, but oh well...

  • @minhgiangho1410
    @minhgiangho1410 9 месяцев назад +1

    Hope you make a series about using Blazer SSR with HTMX, I think it is better than Auto Mode

  • @fmonteiropt
    @fmonteiropt 7 месяцев назад

    You're amazing, but "enough", is this way of making things. I would like to make my company projects in Blazor, but I take 10 mins to make the same in Winforms. Cannot be possible in 2024 that is acceptable this type of referencing and RenderThis/RenderThat, all this needs to be fully automatic. For a student this is entertaining, but we are professionals and Microsoft put us in loops. HTML with CSS was sufficient to understand how hard is it to know properties without a properties bar, and they keep doing it...
    To leave it clear, You are really amazing!! Thanks for make me understand with all your difficulties to make the demo that Microsoft tries but never gets it...

  • @sunitjoshi3573
    @sunitjoshi3573 9 месяцев назад +2

    Thanks a lot for putting this out. Deeply appreciated.

  • @DuncanTyrell-z4x
    @DuncanTyrell-z4x 9 месяцев назад +1

    Hello, great video I just have a question regarding how the service functions after you switch to Auto Mode.
    I was initially under the impression that when in SSR mode it was using the server side implementation which avoids the need to call the API controller and directly accesses the database from the component though when you added a HttpClient to the server side raised an eyebrow as that would not be necessary unless the server was calling itself.
    Could you confirm that we calling from the server to the controller in a API call even with SSR in Auto mode?
    My concern there is that seems like not a great idea to have a server calling itself.
    I think it would be great if we could switch between the Service implementations via dependency injection so that it uses the server side implementation of the service when SSR and the client side implementation with WASM although that might complicate the code.....

  • @KonradTjaden
    @KonradTjaden 11 месяцев назад +2

    II have been meaning to delve into Blazor & WebUI & your channel is probably the best thing I could have come across.
    Keep it up & love your videos, all the way from Cape Town.

    • @PatrickGod
      @PatrickGod  11 месяцев назад +1

      Hey Konrad, Wow, thank you for the amazing compliment! It's awesome to hear that you're finding my channel helpful as you dive into Blazor and WebUI. Greetings all the way to Cape Town - your support means the world to me! Take care, Patrick

  • @uzibiran285
    @uzibiran285 10 месяцев назад +3

    Here’s how the existing render mode attributes map to the new Razor syntax:
    Old New
    [RenderModeXxx] attribute @rendermode directive
    @attribute [RenderModeInteractiveServer] @rendermode InteractiveServer
    @attribute [RenderModeInteractiveWebAssembly] @rendermode InteractiveWebAssembly
    @attribute [RenderModeInteractiveAuto] @rendermode InteractiveAuto

    • @dafnepalu4155
      @dafnepalu4155 10 месяцев назад +2

      And to disable pre-rendering: @rendermode @(new InteractiveServerRenderMode(prerender: false))

    • @marcosdalmolin357
      @marcosdalmolin357 8 месяцев назад

      @@dafnepalu4155 ohhhhh thank you very much!!! that's what I needed.

  • @n1troo
    @n1troo 11 месяцев назад +1

    There is some logic issue when 'Join the waiting list' at academy, better make just big new page with BIG letters you joined ;)

  • @johnstavitiq
    @johnstavitiq 10 месяцев назад +1

    Hey Patrick, I think the server implementation of GameService and the EF context should remain in the server project and the ClientGameService should reside within the Wasm project. This would prevent the EF libraries from being included as a part of the Wasm download, right?

  • @michaelsimmons6921
    @michaelsimmons6921 9 месяцев назад +1

    Your viewing time on this video from me has to be somewhere around 500% right now. I keep using it as a reference, jumping around while I practice creating the same silly little CRUD application over and over again. Thank you!! You will probably be a millionaire just from this video by the time I learn this! 😂😂

  • @muheebar-rahman8294
    @muheebar-rahman8294 10 месяцев назад +1

    Excellent video as always. I learnt so much from your videos. I got a question. In the new ,net 8 web app, how do I create a main layout which might have some buttons or searches or other interactive elements? because going through the sample template, it looks like main layout is static server resource.

  • @MohammadAldefrawy
    @MohammadAldefrawy 10 месяцев назад +2

    Great Effort my friend
    عمل رائع يا صديقي

    • @PatrickGod
      @PatrickGod  10 месяцев назад +1

      Thank you so much!

  • @Cyphebreux16
    @Cyphebreux16 8 месяцев назад +1

    Really helpful video, thanks a lot!!!😁 Really love that you use the newest Web App Blazor project and explain how stuffs work in it!!

  • @The-Z-Zone
    @The-Z-Zone 11 месяцев назад +2

    Wow this seems much more difficult then what it used to be. Was the only reason for putting the Services / Data in the Shared project was so the client project could implement its ClientGameService off of the same interface?

    • @PatrickGod
      @PatrickGod  11 месяцев назад +2

      Absolutely, Zak. The main reason for putting the Services/Data in the Shared project is indeed so that the client project can implement its ClientGameService using the same interface-and also to use the Game Entity. While it may seem more complex at first glance, the new setup doesn't stray too far from what we had with .NET 7. I'm actually planning on creating a comparison video between .NET 7 and .NET 8 Blazor WebAssembly to clear up any confusion. Stay tuned for that!
      Take care,
      Patrick
      PS. An update for the .NET Web Academy is coming soon. 😊

    • @The-Z-Zone
      @The-Z-Zone 11 месяцев назад

      @@PatrickGod looking forward to the update. The overall video was great but it seems the template needs a bit more TLC I think.
      I was thinking perhaps the interface and DTOs should be in the shared project and the data and entities could remain in the ‘server’ project. The interface implementations could sit in their respective projects.

    • @rustyprogrammer
      @rustyprogrammer 11 месяцев назад

      @@PatrickGod Unless I miss something I think it is sufficient to have the Entity Definitions and the Service Interfaces (only) in the shared project. The Server an Client projects can than each implement their own version. This also guarantees you cannot accidentally register the wrong implementation.

  • @strategik365
    @strategik365 9 месяцев назад +2

    Thanks Patrick - I learnt a lot from this.

  • @pezhmanpiramoun2997
    @pezhmanpiramoun2997 5 месяцев назад +1

    Thanks God !
    Simple, Clear, Helpful & COMPREHENSIVE !!!

  • @xxxxxxxxx3609
    @xxxxxxxxx3609 11 месяцев назад +1

    I touch like button on the video. Im not using preview version but 8 will come soon. When it's coming i will watch. Thanks for the give your informations us.

  • @scottpeal60
    @scottpeal60 2 месяца назад

    Would love to see your tutorial on new NET 9 Blazor Server App, Shared, API, and WASM with Auth0 as a single Visual Studio solution. So users could 1) download the wasm to phone/desktop for offline use and data sync, and 2) also access via the browser server side when online. Great videos, much appreciated!!!

  • @rashoElhasa
    @rashoElhasa 2 месяца назад

    Hello,
    Very cool tutorial keep up the good work.🎉
    Could you tell me if it is possible to read data from a view instead of a table? When I try it with Entity Framework I always get error messages.
    Thanks and keep up the good work!!!❤❤❤

  • @doaink5169
    @doaink5169 23 дня назад

    Did you ever get a video of a clean architecture using this approach? Server , Client, DAL, ...
    Thanks again for such great videos!

  • @mohsin6312
    @mohsin6312 11 месяцев назад +3

    Awesome ❤❤❤❤

  • @joshtralia
    @joshtralia 10 месяцев назад +2

    The little wtf made me laugh 😂

  • @bobbastian760
    @bobbastian760 6 месяцев назад

    I guess pre-rendering is best used without the 'Loading' text, in many scenarios users might not realise that more data is coming later. Which is the point - looking ready. Having 'Loading...' text which vanishes totally breaks the illusion.

  • @bertievision
    @bertievision 6 месяцев назад

    Great video and thank you... however, when trying to use controllers with .net identity (user accounts template for example). API Calls to controllers return the text of the login page. As if they are trying to redirect. I am fighting this at the moment so any tips would be appreciated.👍

  • @stefangranath3841
    @stefangranath3841 9 месяцев назад +1

    Patrick I wouldn't even mind if you were coding drunk and making a lot of misstakes. For me I loved seeing the troubleshooting and correcting and refactoring steps.

    • @PatrickGod
      @PatrickGod  9 месяцев назад

      Really appreciate that. Thank you so much! And happy new year! 🥳

  • @TheLUCKYONETutorials
    @TheLUCKYONETutorials 11 месяцев назад +1

    Hi Patrick, your videos are really awesome!
    Could you possibly make a video about the implementation of the CustomAuthState provider in Blazor .NET 8? That would be fantastic!

  • @navirbox4913
    @navirbox4913 8 месяцев назад

    Honestly I just need to know why you created GameList on the Server project and not on the Client project. I mean what goes where, and if you're using Auto mode should you be prepared to fetch actual data as if the component was rendered from the server and then on the client? Isn't that double work?

  • @leo_b061
    @leo_b061 5 месяцев назад +1

    Watched the whole video and answered a lot of questions. Thank you sir

  • @hippiehans
    @hippiehans 5 месяцев назад +1

    What a fantastic guide! I learned a lot! Thank you! :)

  • @AmerBakeer
    @AmerBakeer 10 месяцев назад +1

    Thank you very much, Patrick! The information you shared is both interesting and useful... I appreciate it 👏🏻🙏🏻

  • @mq9032
    @mq9032 8 месяцев назад

    What if i am using web api project in my solution how can i handle this? In webassembly project i just used httpclient in service with custom jwt authentication endpoints. In this new approach i have no idea how to implement both server side and wasm rendering.

  • @honestcommenter8424
    @honestcommenter8424 11 месяцев назад +2

    Can you please make an example on Blazor app with entity hosted in Azure, I am not getting that to work no matter what I try.

    • @vivekkaushik9508
      @vivekkaushik9508 11 месяцев назад

      What exactly are you trying to do? Perhaps I can be of some help?

    • @honestcommenter8424
      @honestcommenter8424 11 месяцев назад

      @@vivekkaushik9508 I am just deploying a plain blazor server/client with added identity and google auth. When running locally, I get the google button on register/sign in page, but when deployed to Azure, the page loads but shows a message saying "no link" or something like that, I can try and get you the correct message if you like.

    • @honestcommenter8424
      @honestcommenter8424 11 месяцев назад

      @@vivekkaushik9508 The error is Sorry, there's nothing at this address.

  • @CleoCat75
    @CleoCat75 2 месяца назад +1

    thanks for showing the backend Network/Console transfer stuff! makes understanding the wasm and socket stuff easier to visualize!

  • @jamesscott6864
    @jamesscott6864 4 месяца назад

    Patrick, a quick one. With the baseUri. Would it still work when you deploy/publish the app ?

  • @DJKav
    @DJKav 8 месяцев назад

    Has anyone tried this out with VS 2022 and the released .Net v8 and up to update 'pre-release' Nuget packages?

  • @46I37
    @46I37 7 месяцев назад

    I’m coming from .net framework crud development, and this so insanely more complicated!!

  • @nicocorei
    @nicocorei 7 месяцев назад

    Hello from Belgium ! Thanks for your video ! This could be cool to give a link of the final project code :)

  • @10Totti
    @10Totti 11 месяцев назад +2

    Thanks as always, but the last wasm/server part is very confusing.

    • @PatrickGod
      @PatrickGod  11 месяцев назад +2

      Thanks for your feedback. I'll definitely create another CRUD video after the final release. Hopefully it will be easier to understand then..

    • @10Totti
      @10Totti 11 месяцев назад

      @@PatrickGod Thank you for the content you bring us!

  • @dotnetdevni
    @dotnetdevni 11 месяцев назад +1

    Dont forget they did say in standup a bug with some of renders at forms

  • @joaovictor3883
    @joaovictor3883 4 месяца назад +1

    Thanks for you, because of you, i am almost getting a real job, i just have a lot thanks❤️

  • @wusswuzz5818
    @wusswuzz5818 7 месяцев назад

    Is there a reason for needing to register services on both projects? (The HttpClient service for example)

  • @scottmarcus6508
    @scottmarcus6508 11 месяцев назад +1

    Patrick,
    Why not have the server call the same api as the client? Seems like it would cut down on some of the redundancy.

    • @PatrickGod
      @PatrickGod  11 месяцев назад +1

      Hey Scott,
      I totally get where you're coming from; it might seem like a streamlined approach at first glance. However, having the server call the same API as the client would actually add an unnecessary hop on the server side. In reality, using web service calls from the client is essentially the same setup we had with .NET 7. So, we're not really introducing any new redundancy here.
      Appreciate the thought, though! Always good to question and discuss different approaches.
      Take care,
      Patrick

  • @bobbastian760
    @bobbastian760 6 месяцев назад

    Not clean architecture, that's a problem looking for a solution.

  • @kipchickensout
    @kipchickensout 6 месяцев назад

    That was a ride, I didn't expect it being that .. "complicated"
    I would like to make a website and setting up a pipeline and do all that with blazor, and I still have yet to do much of that for the first time.
    I want to use blazor because I love C# but also see it at work, not really sure what the site should do...yet. And I spent the last 3 hours just googling what type of project I should create :D

    • @drink8686
      @drink8686 6 месяцев назад

      Yeah man, I have the same problem. I know for sure that I will need an API in the future, but I don’t want to write the client part in JS, so now I’m just thinking what I’ll do, create just a server-side MVC and write in JS, or take blazor, but without the MVC template...

  • @michaelday6987
    @michaelday6987 6 месяцев назад

    Just an FYI, I don't watch tutorials that are less than an hour for a full subject tutorial.

  • @TheAstroguypasa
    @TheAstroguypasa 10 месяцев назад +1

    Thank you for the amazing Tutorial Patrick!

  • @browaruspierogus2182
    @browaruspierogus2182 8 месяцев назад

    the real question is if SSR code for client is exactly same as for wasm so we can share it like a dev with normal brain between render modes
    I don't know why you would mix those modes in global project - SSR is more secure according to MS because it exposes less

    • @mq9032
      @mq9032 8 месяцев назад

      siema, rozumiesz moze jak to dziala bo mnie popierdoli z tym zaraz. jak to moze byc az tak skomplikowane?

  • @josephlittle2812
    @josephlittle2812 11 месяцев назад +1

    Best .NET 8 Blazor content on youtube

  • @pawekarasinski9135
    @pawekarasinski9135 4 месяца назад +1

    Hi,
    You saved my mental health! :-) This is really good stuff. Thank you very much.

    • @PatrickGod
      @PatrickGod  4 месяца назад

      Happy to help! 😊

    • @pawekarasinski9135
      @pawekarasinski9135 4 месяца назад

      @@PatrickGod My joy was a bit premature :-( No matter what I try, when attempting to call an action in the API controller, I get the message:
      Cannot establish a connection because the target computer actively refuses it. (localhost:7270)
      Can You help?

  • @troubleshootq
    @troubleshootq 5 месяцев назад

    do you have a video using an autocomplete component?

  • @etmc_
    @etmc_ 8 месяцев назад +2

    Thanks!

    • @PatrickGod
      @PatrickGod  8 месяцев назад +1

      You are awesome!! Thank you soooo much!! 🥳

  • @valghirenghir3791
    @valghirenghir3791 5 месяцев назад

    Hi,
    What about the flickering stuff ? the @attribute is no more used, how to resolve the problem with @rendermode ?

  • @kevinlloyd9507
    @kevinlloyd9507 11 месяцев назад +1

    Hey Patrick, should there be any concerns with using Scoped instance for the DbContext with Blazor Server? Wouldn't that mean every new Game created by a single user of the app would keep building up in the DbContext since it only gets disposed when the SignalR connection drops off? Please let me know how you typically get around that.

    • @kevinlloyd9507
      @kevinlloyd9507 10 месяцев назад +1

      I just solved my problem (OwningComponentBase)

    • @miyagrace_dev
      @miyagrace_dev 9 месяцев назад

      @@kevinlloyd9507 Close - you're on the right track, but depending on your scenario, you may need even more control over the dependency injection scope and the lifetime of the DbContext than what OwningComponentBase gives you. In that case, inject IServiceScopeFactory and create a scope specifically for a given CRUD operation. Otherwise, you may unintentionally keep around tracked entities and a single DbContext instance for the lifetime of the component, which is usually longer than what is desired. In comparison, as an example, a client-side component calling one REST API endpoint for the read operation and another endpoint for the update would result in two instances of DbContext on the server side, one per API endpoint. But with OwningComponentBase, you will only get one DbContext, which is not only re-used for both read and update operations, but also RE-USED if the UI allows you to invoke the update/read operations multiple times, further worsening entity tracking state issues.
      But, if you want to avoid all of that complexity, especially for larger projects, there is an alternative. In this case, I would suggest actually splitting the server side project of the Blazor application into two applications - the Blazor "host" (this is the existing server-side project that's included in the Visual Studio template) and the "api" (a new Asp.Net application you create). Then, both the server side components and client side components would access data in the same way with API calls (such as REST/gRPC/SignalR/and so on). In this scenario, either the Blazor host application itself (say, via YARP), or an external reverse proxy (e.g. nginx) proxies API requests from client-side components (wasm) to the API project. Then the only difference between server-side components and client-side components is how the HttpClient factory instances are registered - depending on which proxy implementation you go with.
      This sounds more complex, but in truth it's less complex, because now both server-side components and client-side components get to use the same exact implementation of the data service interfaces. You don't need to have two implementations of, for example, the IGameService for server and client (you might have to have two HttpClient factory DI registrations though), and you don't need to think very carefully about DbContext scopes and lifetimes or use IServiceScopeFactory to make sure you're not retaining a DbContext instance for too long when a component is long-lived in a server-side component.

  • @FeralFluxMusic
    @FeralFluxMusic 2 месяца назад

    I'm just getting started with Blazor.
    This was very helpful as an overview.
    Something I'd be interested in is how to parameterize the CRUD process.
    Our SQL server has thousands of tables and views and I'd like to avoid manually creating services for each one of them.

  • @darylg3560
    @darylg3560 8 месяцев назад

    This video is fantastic - I have learnt so much from it, even things like Services which aren't the topic of the video are much clearer now I've seen someone implement them properly! Thank you Patrick.
    I do have two questions for anyone who can help: How come the client was able to get the list of Games before the API was implemented? And also, how do you implement this with Identity when you need authorizations/cookies to retrieve/post the data with the API?

  • @asdasdaa7063
    @asdasdaa7063 8 месяцев назад

    Hi patrick, can you please explain how hosting the new .net 8 blazor web app (with auto rendering, so both client + server), how exactly do we deploy this to azure? its making my head spin.

  • @andrewbrink2078
    @andrewbrink2078 10 месяцев назад

    Awesome, awesome video. This is a nice interactive way to learn rather than those boring completed, edit videos (mistakes and typos edited out). My wife is not happy with me because now I hog the TV. I want to watch my effing programs. Oh, effing is not swearing. It is for EntityFrameworking.

  • @michaelrafales2782
    @michaelrafales2782 3 месяца назад

    Seeing how you coded both client and server side CRUD operations was extremely helpful and informative!!! Thank you again for such a great video.

  • @michaelrafales2782
    @michaelrafales2782 3 месяца назад

    Thank you so much! I really appreciated your explanation in the first 20 minutes. That was extremely helpful! Looking forward to the rest of the video

  • @michaelrafales2782
    @michaelrafales2782 3 месяца назад

    I am 46 minutes in and I am learning so much!!! This is fantastic! I appreciate your mistakes. Watching you find your mistakes has really helped me learn how to troubleshoot my own mistakes. Really enjoying this video!

  • @brettgarnier107
    @brettgarnier107 11 месяцев назад

    My quckfix menu doesn't offer options to install packages, is that a setting or vs extension? Latest VS 2022 preview.

  • @TheMezanine
    @TheMezanine 11 месяцев назад +1

    Thanks you Patrick for this great video as always. But the new "breaking" architecture is very confusing for those who used to play with blazor wasm hosted. This new architecture seem to me
    like a roolback

    • @JollyGiant19
      @JollyGiant19 11 месяцев назад +3

      It’s ultimately a unification. WASM is still there and useable without invoking any of the other Blazor bits but if you ever want to bring them in, you can

    • @TheMezanine
      @TheMezanine 11 месяцев назад +1

      @@JollyGiant19 yes I know, but it's to confusing and seem like not well designed.
      I hope they will bring back the server side boilerplate API implementation in the final release to avoid us having to implement all thoses stuff by ourselves.

    • @paulgehrman
      @paulgehrman 10 месяцев назад

      @TheMezanine I agree with you, but also agree that this is a step towards unification. For now, I don't see much reason to deviate from the wasm app, at least for LOB-type apps.

  • @vivekkaushik9508
    @vivekkaushik9508 11 месяцев назад +1

    28:24 😁 have some sleep Patrick. 😅

  • @RFGSwiss
    @RFGSwiss 10 месяцев назад

    Thank you so much Patrick. Your work is great. But i must admit, Blazor8 feels like a big step back to me. Every improvement comes with a caveat. i could accept the project ref between server and client, but not if i need a shared class. but the bummer for me was, when i realized i still need controllers with extra services clientside. the new way of storing some components serverside and some clientside doesnt appeal to me also. all over all it feels like blazor8 is not finished and needs more rework.

  • @bigh1708
    @bigh1708 6 месяцев назад

    this was great. haven't coded in years, since the first mvc. This was a pretty wild ride. I skipped the web assembly, and coded it all to server and it worked perfectly. Can't wait to try more.

  • @luisc1794
    @luisc1794 8 месяцев назад

    Hi Patrick can you do a video on how to upload files using the new .net 8 automatic render, thanks a lot, love your videos

  • @Duelweb
    @Duelweb 10 месяцев назад

    Just one thing you missed. You did not show adding in the one parameter that allows for editing of the record. The parameter needs to be on both the Listform and the Editform. You only show putting it in on the one form?

  • @broadshare
    @broadshare 11 месяцев назад +3

    As an experienced .NET developer my strong advice for new .NET developers I would be focus on SSR, this can be achieved in asp razor pages, MVC and now maybe blazor SSR. Blazor Wasm can only be used for business management apps not websites or anything that requires SEO. Blazor server on the other side requires that persistent server connection via signalR which comes with a ton of limitations including scalability issue. SignalR should remain a realtime tech for c# via nuget package n not render mode for entire app. SSR just like razor pages and MVC is how websites are typically made.

  • @Eric-ix2yl
    @Eric-ix2yl 6 месяцев назад

    This was a great learning resource! Appreciate your patient approach in learning as you go, I was confused at first during the webassembly portion about why you'd include the services in the shared project, but seeing the separate implementation for the client project to use made a lot of sense. Thanks a bunch for the video!

  • @bobbastian760
    @bobbastian760 6 месяцев назад

    It would be nice at the end of the tutorial that we have an app that has all the things in it we learned, rather than deleting or modifying them as we go - this could then be a reference project - thanks.

  • @AmitSharma-bl1ur
    @AmitSharma-bl1ur 11 месяцев назад

    Great Sir You are truly God for blazor learner , Sir i have a question how we will navigate from controller to server razor page in .net 8 using navigation manager it's urgent sir please

  • @PelFox
    @PelFox 11 месяцев назад

    I wonder how auth will work with the double rendering mode. Blazor Server may use a cookie through oidc with the AuthStateProvider. But how would that work in the client app 🤔

  • @ZdeněkGrežďo
    @ZdeněkGrežďo 11 месяцев назад

    Thanks Patrick for showing how overly complicated it will be to create a simple CRUD in this "mode". I guess no one thought about beginners.

  • @rwxzig
    @rwxzig 9 месяцев назад

    Is there a github repo for this code, or did someone follow the tutorial and has a repo for it?