The first thing that we need to understand is the concept of convention over configuration. The Code First approach expects the model classes to follow some conventions, so that the database persistence logic can be extracted from the model. For example, if we define a property named ID
in the model class, this property value will be treated as the primary key for the table that is being mapped to this class. The benefit of this convention-based approach is that if we are following the conventions, then we don't have to write any extra code to manage the database persistence logic. The downside of this approach is that if a convention is not followed, and Entity Framework is not able to extract the needed information from the model, an exception will be thrown at runtime.
In scenarios where we are not able to follow the conventions but still need Entity Framework to persist the data, we need to provide some additional information...