Entity Framework Pitfalls: DbConfiguration Classes Are Automatically Loaded
Entity Framework, since version 6, allows us to specify certain aspects of its configuration by code through a DbConfiguration-derived class. This configuration can be specified in one of three ways:
- A DbConfigurationTypeAttribute when applied to a DbContext class defines the configuration class to be used, if it is not included in the same assembly as the DbContext;
- The codeConfigurationType attribute of the entityFramework section does the same;
- The static SetConfiguration method of the DbConfiguration class can also be used to set the global configuration programmatically.
However, if there is a DbConfiguration-derived class in the same assembly as your DbContext, it will be automatically set as the configuration class, provided that:
- It is public;
- It is non-abstract;
- It has a public parameterless constructor.
So, a DbConfiguration in the same assembly as the DbContext is automatically loaded. If there is more than one, the DbContext constructor will throw an exception.