Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intermittent error with EF Core: The connection does not support MultipleActiveResultSets

Tags:

I have an ASP.Net Core application that uses EF Core.

I use ASP.Net Identity and share the same DBContext for my app's entities.

I have set my connection string to an Azure SQL database to have MultipleActiveResultSet=True.

It works for a day or two, but eventually it fails with the error:

The connection does not support MultipleActiveResultSets.

I don't think MARS is the real issue since it worked for the first two days it was up.

I am using ASP.Net Core's built-in DI to set my DbContext.

services.AddDbContext<AppDbContext>(options =>   options.UseSqlServer(appDbContextConnectionString)); 

My understanding is that the default lifetime for the DbContext above is Transient (per web request).

Is it alright to share the same DBContext with ASP.Net Identity or should I have a separate one for my app's entities, pointed to the same DB?

I don't know if this is an issue with EF Core, ASP.Net Core or with SQL Azure configuration.

like image 779
Jonas Arcangel Avatar asked Sep 04 '17 09:09

Jonas Arcangel


People also ask

What is Multipleactiveresultsets EF core?

Multiple Active Result Sets (MARS) is a feature that works with SQL Server to allow the execution of multiple batches on a single connection.

What is Multipleactiveresultsets?

Multiple Active Result Sets (MARS) is a feature that allows the execution of multiple batches on a single connection. In previous versions, only one batch could be executed at a time against a single connection. Executing multiple batches with MARS does not imply simultaneous execution of operations.


1 Answers

I had a similar issue and I found that the problem was that I missed an await statement in front of my method.

FetchStuffFromDBAsync(); 

Became:

await FetchStuffFromDBAsync(); 

And the problem was gone.

like image 196
MattBH Avatar answered Sep 28 '22 09:09

MattBH