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.