Comments (3)
In short words, the answer is: register your DbContext as Transient lifetime.
And ... the long story:
In .NET Core 1.1 you register your DbContexts by default in Scoped lifetime, like this:
services.AddDbContext<AttendeeContext>(options => options.UseSqlServer(connectionString)
So, how DbContextScope does his job (as long, as I debugged sources):
- in each new scope, (like it usually recommends:
using (var dbScope = _factory.Create()) { ... }
) the new collection of DbContexts initialized - not previously initialized DbContexts in the current scope of whole web request. - when the
dbScope
code block ends,using
statement callsDispose
for your DbContextScope and that means exact disposing of all your existing collection of DbContexts. - What does it mean for lifetime of DbContext in scope of lifetime of whole Web request?
-- it means, that you manually have killed DbContext somewhere in the middle of living your Web request, and DbContext becomes unavailable for next calls inside still alive Web Request.
The solution is to allow your serviceProvider to recreate DbContext for each request during Scoped lifetime of your Web request:
services.AddDbContext<AttendeeContext>(options => options.UseSqlServer(connectionString, ServiceLifeTime.Transient)
And by the way, I also registered IDbContextScopeFactory
as Singleton lifetime.
from dbcontextscope.
Can you just not dispose the DbContextScope?
from dbcontextscope.
Jaap-van-Hengstum, please, share your decision, if your figured it out. I'm really on the same page with about this question.
I play with .NET Core and native DI for my Web API. Tried many approches with DbContextScope
, IAmbientContextLocator
and their lifetimes. As I understood correctly, DbContextScope should be Transient and AmbientContextLocator - Singleton. But the problem exactly the same - DbContextScope
kills DbContext
everytime.
from dbcontextscope.
Related Issues (20)
- Compatibility with Effort
- Use with EntityFramework Reverse POCO Code First Generator? HOT 1
- nested IDbContextFactory.CreateWithTransaction HOT 1
- .net core HOT 2
- Unable to use a non-interfaced DbContext with DbContextScope HOT 2
- TDD with DbContextScope HOT 1
- Connect to database with a different user/connection string HOT 5
- Moving to .Net Standard 2.0 & EF 2.0 HOT 8
- Best practice for taking advantage of EF first-level caching in Domain Service Layer. HOT 5
- Working with Store Procedure and Transaction
- DbContextScope with EF Core !! HOT 6
- Dead link
- Problems when attaching new dbcontexts while performing savechanges
- The current type, EntityFramework.DbContextScope.Interfaces.IDbContextFactory, is an interface and cannot be constructed. Are you missing a type mapping?
- Suggestions: how to retrieve ID generated by DB after saveChanges() HOT 2
- how to use DbContextScope with Parallel.ForEach
- Satellite class to use the same Factory/Locator across application modules
- What to pass to IDbContextFactory argument in DbContextScope constructor? HOT 1
- Support of ASP.NET Core dependency injection out of the box
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dbcontextscope.