Dealing with DB Through EF within Winforms
this.metroGrid1.Columns["Id"].Visible = false;
    this.metroGrid1.Columns["ExamId"].Visible = false;
    this.metroGrid1.Columns["Comments"].Visible = false;
    this.metroGrid1.Columns["CreationDate"].Visible = false;
    this.metroGrid1.Columns["LastModified"].Visible = false;
    this.metroGrid1.Columns["PatientState"].Visible = false;



These lines have a lot of repetition. It would be better to create an array of the column names, and then loop over the array and set each one.


    var patients = db.Patients;



What's the purpose of having a temporary variable here? You're not even declaring its type.