Configure multiple database Entity Framework 6

c# dbcontext entity-framework entity-framework-6


In my solution I have 2 projects that use Entity Framework 6. Each points to a different database, both using the same data provide - SQL Server. A third project in my solution needs to use both databases. My problem is how to configure those context. I tried to create a configuration class in a separate assembly:

namespace OSAD_Base
    class EfDbConfiguration : DbConfiguration
        public EfDbConfiguration()
            SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);

and referencing to this configuration in each context class:

namespace IntegrationDb
    [DbConfigurationType("OSAD_Base.EfDbConfiguration, OSAD_Base")]
    public partial class IntegrationEntities : DbContext
        public IntegrationEntities(string connectionString)
            : base(connectionString)

When initializing my first, all works correct, but when the second context initializes (Order does not matter) I get and error:

An instance of 'EfDbConfiguration' was set but this type was not discovered in the same assembly as the 'B1Entities' context. Either put the DbConfiguration type in the same assembly as the DbContext type, use DbConfigurationTypeAttribute on the DbContext type to specify the DbConfiguration type, or set the DbConfiguration type in the config file. See for more information.*

I also tried to create an entityframework section in my app.config (of the start up project) but got the following error:

Configuration system failed to initialize

Unrecognized configuration section entityFramework

How can I use 2 separate EF Projects in the same solution?

2/4/2014 8:13:01 PM

Popular Answer

It's not important that how many DbContexts you have(In entity framework 6). Just put connection strings in appConfig or webConfig of startup project.

Then you're ready to go.

Example of appConfig with two connectionString with Ef 6.01 & Sql Compact 4.0

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <add name="MainDb" connectionString="Data Source=|DataDirectory|\Db.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="AnotherDb" connectionString="Data Source=|DataDirectory|\AnotherDb.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
        <parameter value="System.Data.SqlServerCe.4.0" />
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />

And example of DbContexts:

public class AppDb : DbContext
    public AppDb()
        : base("MainDb")


public class AnotherDb : DbContext
    public AnotherDb()
        : base("AnotherDb")


It's not important that your contexts are in separated projects or not, only Config of startup project is important.

Let me know if any other information you need.

Good luck

12/2/2013 11:09:20 AM

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow