There is already an open DataReader associated with this Command which must be closed first

I was working on one of my Entity Framework Code First websites the other day when I noticed the following error being returned to me:

There is already an open DataReader associated with this Command which must be closed first

Doing a few searches online I could see some of the solutions were to include the parameter 'MultipleActiveResultSets=True' in your entity framework setting in the web.config. However, when I checked my web.config to look for this setting I noticed that I did actually have it all setup as expected.

Doing some more digging around I noticed that the cause for this issue is down to an issue with deferred execution in some of my queries.

The solution was to add a simple .ToList() at the end of my query.

A simple fix but one that drove me nuts for a while!

How to force your database name using Entity Framework migrations in a multi-project solution

If you're using Entity Framework migrations in a multi-project solution you might have noticed that when you run the 'Update-Database' action your database was given the name 'yourdatabase.Data.DataContext'. Some people don't mind this default naming scheme but I want to call my databases something a bit cleaner.

My typical MVC solution contains many projects to help keeps things separated. My database code is in my 'Data' project but my web.config file handling my connection string is usually contained in my 'Web' project. I noticed that even if I have given my database a name in my connection string this was not being picked up by the Entity Framework Migrations code.

Luckily all you have to do to force entity framework to use the database name you want is put the database name into your Context file. For example:

public class DataContext : DbContext
    {
        public DataContext() : base("DatabaseNameHere")
        { }

        public DbSet Table1 { get; set; } 
        public DbSet Table2 { get; set; }
    }