Вы не можете проверить всю строку с DbNull. Вам необходимо проверить отдельные поля или, по крайней мере, в этом контексте, по крайней мере, поле идентификатора.
Существует DataRow.IsNull (имя поля)
if(!linha.IsNull("id")) {
this.Medico = new MedicoModel(Int32.Parse(linha["id"].ToString()),
linha["nome"].ToString(),
linha["crm"].ToString(),
Boolean.Parse(linha["habilitado"].ToString()));
Обратите внимание, что префикс псевдонима не требуется, когда данные попадают в строки с данными.
Сказал, что в вашем запросе есть еще одна серьезная проблема. Вы объединяете строку для создания команды sql. Это хорошо известная проблема, приводящая к хакерским атакам Sql и ошибкам синтаксического анализа. Вы должны использовать параметры как здесь:
MySqlCommand sqlQuery = new MySqlCommand(@"select u.login, u.nome,
u.tipo, u.ativo, m.id, m.nome, m.crm, m.habilitado
FROM sis_usuarios u LEFT JOIN sis_medicos m ON u.medico = m.id
WHERE u.login = @login", _dbConn.GetConnection());
sqlQuery.Parameters.Add("@login", MySqlDbType.VarChar).Value = ALogin;