Тёмный

DON'T Use DbContext In Blazor Interactive Server Components! (.NET8) 

Codewrinkles
Подписаться 28 тыс.
Просмотров 7 тыс.
50% 1

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

 

10 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 60   
@naunihalsidhu
@naunihalsidhu 9 месяцев назад
First of all great video highlighting the DbContext issue in Blazor Server(.NET 6/7) and now in .NET for Interactive Server Side Rendering. I encountered it back in .NET 6 and was able to resolve it back than using the technique you mentioned here. I know it takes lot of time to create video and sharing it for the community, great work and great topic !. I also noticed that every time we run EF query or any operation on EF we should always use await ... EF Operation, otherwise it can run into threading issue.
@kell7689
@kell7689 7 месяцев назад
I'd think it's best practice to always use awaits when building user interfaces in general
@sob515
@sob515 Месяц назад
YES! finally thats what i was looking for the whole day.... noone says about it in examples or docs
@TosoAlejandro
@TosoAlejandro 9 месяцев назад
Thank you for your video! I found the solution to my issue with DbContext in Blazor Interactive Server. It worked perfectly with the solution from your video. I had no idea what could be causing the error in my application; it was functioning correctly until it suddenly stopped, throwing some very strange errors. I had no clue until I started searching online and happened to come across your video. Great help! 👏🏽😄
@Codewrinkles
@Codewrinkles 9 месяцев назад
Glad it helped!
@ClaudioBernasconi
@ClaudioBernasconi 9 месяцев назад
Interesting video. I haven't used EFCore with Blazor so far, but I will keep it in mind for future projects. It's great to know. Thanks.
@Codewrinkles
@Codewrinkles 9 месяцев назад
Thanks for watching and dropping a comment.
@gzuares
@gzuares 6 месяцев назад
Excelente gran problema que me has ahorrado. Si ya me estaba dando lata y no sabía cual era el problema.
@yassermian9913
@yassermian9913 2 месяца назад
I made an app in blazor server. If i display an invoice # 1 with detail rows and switch to invoice #2. then i if i go to DB back end and change Qty from 1 to 2 of Invoice #1 using update query. Now if i retrieve invoice #1 again in UI it still shows me old Qty and not Qty=2. Ever since I am using DBContextFactory this problem is gone.
@yassermian9913
@yassermian9913 2 месяца назад
Is EF Core going to work with DbContext Factory without any modifications?
@jeandesmarais746
@jeandesmarais746 4 месяца назад
thank you
@sinandoganli
@sinandoganli 9 месяцев назад
If we do not use Ef and DBcontext, but perform our operations using system.data.sqlclient with a helper we wrote and dispose at the end of the transaction, will we encounter the same problem?
@user-fqlt
@user-fqlt 8 месяцев назад
What about using dbContext with ServiceLifetime.Transient ?
@RazakRoughneck
@RazakRoughneck 7 месяцев назад
Yeah I run into concurrency issues. I registered the dbcontext as transient and it seems to work.
@drumistoyanov
@drumistoyanov 9 месяцев назад
I was having this trouble a few days ago. Wasted 5 hours to find out what was the problem...
@Codewrinkles
@Codewrinkles 9 месяцев назад
I also learned this the hard way!
@marianf25
@marianf25 9 месяцев назад
If I would have seen this video 3 years ago I would now have in total at least 1 week of my life back 🤣 btw I'm curious how do you handle repositories/services with this approach?
@Codewrinkles
@Codewrinkles 9 месяцев назад
You inject the IDbContextFactory instead of the DbContext and than you do exactly what I didin the video. However, there is a certain level of awkwardness here (that I mentioned in the previous video) because your app will now have a lot of places where you can use the DbContext (regular SSR components) and a lof of places where you would need to use IDbContextFactory. That's in fact one of the major downsides of this new Blazor model.
@marianf25
@marianf25 9 месяцев назад
That’s how I ended up doing it. I also find it a bit awkward, I was hoping someone has a more elegant solution. Maybe Microsoft will handle it in .Net 9 😁
@Codewrinkles
@Codewrinkles 9 месяцев назад
Doesn't seem like that.Take a look at this Twitter thread. David Fowler doesn't seem to agree that there is a problem (maybe not problem, but very bad dev experience): twitter.com/danpdc/status/1724596015087357955
@marianf25
@marianf25 9 месяцев назад
@@Codewrinkles Yeah, it seems we'll have to just be careful depending on the situation for now
@secury
@secury 7 месяцев назад
Díky!
@Codewrinkles
@Codewrinkles 7 месяцев назад
Thanks for the super!
@saroshwadia
@saroshwadia 9 месяцев назад
Would DbContextFactory work the same in Server/WASM/SSR - so we can use it in all types of Blazor Apps? Thx great video
@Codewrinkles
@Codewrinkles 9 месяцев назад
Well, in wasm you cant't use ef core. You need to make API calls. For the others, yes, you can use the factory in both cases
@saroshwadia
@saroshwadia 9 месяцев назад
@@Codewrinkles yes of course WASM needs to make an API 🙂 - so can the API itself use DbContextFactory so it's always consistent throughout ?
@patrickkuhnel9531
@patrickkuhnel9531 9 месяцев назад
I inject the service provider to my blazor components and manually create scopes in my components and get the services from these scopes. Are there any drawbacks with this? I don't like the idea of changing Backend code because some frontends behave different than others. The issue is not the Backend it's the frontend, so that's where I fix it.
@Codewrinkles
@Codewrinkles 9 месяцев назад
That's definitely also a good approach and I like your reasoning.
9 месяцев назад
Also just create a base component for your components and you have auto-scoping. That is what Blazor should have provide, auto scoping so that all the three render modes work the same.
@kevinlloyd9507
@kevinlloyd9507 9 месяцев назад
I did the same thing last week on a project. Used a base component that would handle it's own scopes and resolve it's own services and just dispose them in the IDispose() of the component. I have a lot of existing backend services that rely on the DbContext being a Unit Of Work shared among services. And DbContextFactory wasn't going to provide the fix I needed. I'm curious how you implemented your "auto scoping" @
@kevinlloyd9507
@kevinlloyd9507 9 месяцев назад
Actually, I just did some more research and realized what I've implemented already exists: OwningComponentBase. Much better that what I did :)
@ProDevelopmentPK
@ProDevelopmentPK 9 месяцев назад
Nice, I've a Global InteractiveServer App which uses Repository Pattern and Services. I Inject IUserService in my Component and that Service use UnitOfWork that handles DbContext. I've faced exceptions while navigating to multiple components that uses DbContext. Do you think If I just replace builder.Services.AddDbContext to AddDbContextFactory then it will resolve my issue?
@ProDevelopmentPK
@ProDevelopmentPK 9 месяцев назад
When I switch b/w multiple components that use Services>DbContext I get this error: A second operation was started on this context instance before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext.
@Codewrinkles
@Codewrinkles 9 месяцев назад
To me it seems like one of the problems that I described in the video.
@SayconX2
@SayconX2 4 месяца назад
Nice vídeo!
@marcusmaunula5018
@marcusmaunula5018 9 месяцев назад
What about using Connection Pooling? Have you done a video on that?
@Codewrinkles
@Codewrinkles 9 месяцев назад
I don't recall to have made a video on that topic.
@marcusmaunula5018
@marcusmaunula5018 9 месяцев назад
@@CodewrinklesMight be worth it since the EfCore team seems to favor it over the others.
@MrXLR82
@MrXLR82 9 месяцев назад
Is it efficient to create db context everytime?
@Codewrinkles
@Codewrinkles 9 месяцев назад
Efficiency is the last of your worries if you don't.
@MrXLR82
@MrXLR82 9 месяцев назад
@@Codewrinkles I am thinking to replace everything with factory, is it effective?
@krutelut
@krutelut 9 месяцев назад
amazing video! Is it possible to get the source code for this small project of yours :)
@Codewrinkles
@Codewrinkles 9 месяцев назад
If you get into the Membership program on this channel at ambassador level, you'll always get the source code for each video.
Далее
Escaping The .NET 8 Blazor Redirect To Login Hell
4:29
Rust Install on Windows
21:01
Просмотров 54
Brutally honest advice for new .NET Web Developers
7:19
Don't Use Polly in .NET Directly. Use this instead!
14:58
Forget Controllers and Minimal APIs in .NET!
14:07
Просмотров 67 тыс.