Salgue ambos os lados das rodelas de berinjela e coloque sobre uma camada dupla de toalhas de papel (superior e inferior) para escorrer.
Deixe descansar por 30 minutos. Seque as rodelas de berinjela. Em seguida, pincele rodelas de berinjela com 1/4 de xícara de azeite de oliva e coloque em uma assadeira. Asse por 10 minutos, vire a berinjela e asse por cerca de mais 15 minutos, ou até ficar macio.
Retire do forno para esfriar e abaixe a temperatura para 170° C.
Aqueça uma frigideira grande em fogo médio-alto e adicione o restante 1/4 de xícara de azeite de oliva. Adicione a cebola, a cenoura e o aipo e refogue até ficar macio, cerca de 10 minutos.
Junte o alho e os cogumelos. Refogue até que o suco evapore - cerca de 10 minutos. Adicione o orégano, a canela, o tomate e a salsa. Cozinhe até a mistura ficar espessa - cerca de 10 minutos. Tempere com sal e pimenta. Reserve.
Em uma assadeira de vidro. Disponha metade da berinjela em uma única camada. Coloque a metade da mistura de tomate por cima. Polvilhe 2 colheres de sopa de queijo sobre os tomates. Repita as camadas com berinjela, mistura de tomate e 2 colheres de sopa de queijo.
Em seguida, derreta a manteiga em uma panela média. Junte a farinha e cozinhe por 1-2 minutos, mexendo sempre. Aos poucos, adicione o leite e cozinhe até engrossar o molho, mexendo sempre, por cerca de 5 minutos. Junte a 1/2 xícara de queijo restante e tempere com sal e pimenta.
Tempere as gemas mexendo cerca de 1/2 xícara do molho de creme nas gemas. Misture até ficar homogênea e em seguida, adicione a mistura de gemas ao molho de creme.
Despeje o molho sobre a berinjela e polvilhe com o queijo restante. Asse por cerca de 45 minutos ou até que estejam bem aquecidos e o molho e o queijo por cima estejam dourados. Deixe esfriar por 15 minutos antes de fatiar e servir.