Turn Pluralization On . The problem is that you are modeling the object using the exclusive name convention ( Pupil ), while in your database you are using the plural Pupils names with s .
UPDATE
This post shows how you can turn it on or off. Some relevant excerpts from this post:
To turn the plural on or off
From the Tools menu, select Options.
In the Options dialog box, expand Database Tools. Note. Select Show all options if the database tool node is not displayed.
Click O / R Designer.
Set the Pluralization parameter for the names to Enabled = False so that the O / R constructor does not change the class names.
Set the Pluralization of Names option to Enabled = True to apply plural rules to object class names added to O / R Designer.
UPDATE 2
But keep in mind that you should avoid multiple names. You can read here how to do it (I will quote it here, in case the link does not work).
(...) When you work with the Entity Framework Code First approach, you create database tables from the classes of your model. Typically, the Entity Framework creates tables with multiple names. this means that if you have a model class PhoneNumber, the Entity platform will create a table for this class called PhoneNumbers. If you want to avoid a plural name and want to use a name like Customer, you can do it as follows In your DBContext class, override the OnModelCreating method as follows (...)

(...) Overriding this method will avoid creating tables with multiple names. Now it will create a table named "PhoneNumber", not "PhoneNumbers" (...)
Joรฃo Pinho
source share