With an RTM release of Entity Framework 5 in the first quarter of this year there is something I'd like to push into it, but don't know how to go about it. Below is my idea. If anybody is actively contributing to the project, please consider the following.

With old EF you have to write your own contexts to contain the entities. Even with CTP5, you still have to do this. This isn't new. NHibernate even requires that you create and initialize a session via the session factory. Most of us who've used nhibernate have relied on an automodelgenerator for this, and I'd like to see something like this in the final release. My solution during testing is as follows:

First we need an auto context that will pick up all entity type configurations and all IConfigurationConventions...
Code Csharp:
using System;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using System.Data.Entity.ModelConfiguration.Conventions.Configuration;
using System.Linq;
using System.Reflection;
namespace System.Data.Entity.Enterprise
{
    public class AutoContext : DbContext
    {
        public AutoContext(string connectionString) : base(connectionString)
        {
            // TODO: nothing
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            ImportEntityTypeConfigurations(modelBuilder);
            ImportConfigurationConventions(modelBuilder);
            base.OnModelCreating(modelBuilder);
        }
        private void ImportEntityTypeConfigurations(ModelBuilder modelBuilder)
        {
            var types = Assembly.GetExecutingAssembly().GetExportedTypes().Where(x => x.BaseType != null && x.BaseType.IsGenericType && x.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
            foreach (Type type in types)
                modelBuilder.Configurations.Add(Activator.CreateInstance(type) as dynamic);
        }
        private void ImportConfigurationConventions(ModelBuilder modelBuilder)
        {
            var types = Assembly.GetExecutingAssembly().GetExportedTypes().Where(x => x.GetInterfaces().Any(y => y.IsGenericType && y.GetGenericTypeDefinition() == typeof(IConfigurationConvention<,>)));
            foreach (Type type in types)
                modelBuilder.Conventions.Add(Activator.CreateInstance(type) as dynamic);
        }
    }
}

Next we need a context provider...
Code Csharp:
using System.Data.Entity;
using System.Web;
namespace System.Data.Entity.Enterprise
{
 
    public static class ContextProvider
    {
        public static DbContext Current
        {
            get { return HttpContext.Current.Items["DbContext"] as DbContext; }
            set { HttpContext.Current.Items["DbContext"] = value;  }
        }
    }
}

We can use this in Application_BeginRequest and Application_EndRequest to provide per-request contexts by setting and disposing the Current property and access it in our base repository classes.

This saves from having to define a dedicated context and eliminates the need to add maps and conventions manually.