Por que devo ter um construtor sem parâmetros para o Code First / Entity Framework

Essa é mais uma questão de "Por que fazemos as coisas", pois meu problema real foi resolvido, mas não sei por quê.

Eu estava lidando com o seguinte código dentro do meu CountyRepository:

public IEnumerable<County> GetCounties(string stateAbbr)
    {
        using (var db = new AppDbContext())
        {
            State state = (from s in db.States
                         where s.Abbr == stateAbbr
                         select s).First();

            return context.Counties.Where(c => c.StateID == state.StateID).ToList();
        }
    }

O AppDbContext que criei acima iria para um inicializador personalizado:

  public class AppDbContextInitializer : DropCreateDatabaseIfModelChanges<AppDbContext> 
{
    protected override void Seed(AppDbContext context)
    {
        StatesList states = new StatesList();
        context.States.AddRange(states);
        context.Counties.AddRange(new CountiesList(states));

        context.SaveChanges();
    }
}

O problema era que, quando eu executava o código, o AppDbContext carregava as informações do estado e do município corretamente no inicializador, mas quando voltava ao repositório do condado, o AppDbContext estava vazio e apresentava erro devido a "O estado não tem construtor sem parâmetros". Como eu não queria que meu objeto State tivesse um construtor sem parâmetros, procurei o dia inteiro uma solução para o motivo pelo qual o AppDbContext carregaria no Repositório do Condado. Finalmente encontrei a seguinte solução:

Exceção ao carregar objetos relacionados. Estrutura de entidade

Foi uma solução simples. Adicione o construtor sem parâmetros e marque-o como Obsoleto. Eu fiz isso e funcionou perfeitamente.

Minha pergunta é: POR QUE devo fazer isso? Eu passei por vários exemplos de CodeFirst usando o Inicializador personalizado e nenhum deles mencionou a necessidade de um construtor vazio ou a marcação de Obsoleto.

Existe uma solução melhor ou pelo menos uma explicação para que eu possa avançar com conhecimento em vez de confusão?

questionAnswers(1)

yourAnswerToTheQuestion