Développement une application web
basée sur Entity framework Code First
Le projet qu’on va mettre en place est une application web de gestion des salariés et
les affectations aux départements d’une entreprise. Avec une approche CodeFirst,
nous devons commencer par la création des classes suivantes :
Classe Salarie :
public class Salarie
{
public Int32 SalarieId { get; set; }
public String Nom { get; set; }
public String Prenom { get; set; }
public String Fonction { get; set; }
public Double Salaire { get; set; }
public Int32 DepartementId { get; set; }
Classe Département :
public class Departement
{
public Int32 DepartementId { get; set; }
public string Description { get; set; }
public String Location { get; set; }
public IList<Salarie> SalraieListe { get; set; }
Le projet sera créé avec une approche Entity framework code first, nous devons créer
une classe SalarieDBContext dans le même répertoire Models :
public class DbSalarieContext : DbContext
{
public DbSalarieContext(): base("name=MyDbConnection")
{
}
public DbSet<Departement> Departement { get; set; }
public DbSet<Salarie> Salarie { get; set; }
N’oubliez pas de paramétrer votre chaine de connexion dans le fichier de
configuration des applications Web.config :
<connectionStrings>
<add name="MyDbConnection" connectionString="Data Source=.\SQLExpress;Initial
Catalog=MaBaseSalarie;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
Votre solution ressemble à l’arborescence suivante :
Ajoutez une page ASPX « Gestion Departement » pour la gestion des salariés et
départements :
<div>
<asp:GridView ID="GvDepartement" runat="server"
AutoGenerateSelectButton="True" DataKeyNames="DepartementId"
OnSelectedIndexChanged="GvDepartement_SelectedIndexChanged">
</asp:GridView>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Id Departement :
"></asp:Label>
<asp:TextBox ID="TbId" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text="Description Depart
:"></asp:Label>
<asp:TextBox ID="TbDescription" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label8" runat="server" Text="Location :"></asp:Label>
<asp:TextBox ID="TbLocalisation" runat="server"></asp:TextBox>
<br />
<br />
<br />
<br />
<asp:Button ID="BtAdd" runat="server" OnClick="BtAdd_Click" Text="ADD" />
<asp:Button ID="BtUpdate" runat="server" OnClick="BtUpdate_Click"
Text="MAJ" />
<asp:Button ID="BtDelette" runat="server" OnClick="BtDelette_Click"
Text="Delette" />
<br />
<br />
Add Salarie :<br />
<br />
<asp:Label ID="Label3" runat="server" Text="Nom"></asp:Label>
<asp:TextBox ID="TbNom" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label4" runat="server" Text="Prenom"></asp:Label>
<asp:TextBox ID="TbPrenom" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label5" runat="server" Text="Fonction :"></asp:Label>
<asp:TextBox ID="TbFonction" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label6" runat="server" Text="Salaire :"></asp:Label>
<asp:TextBox ID="TbSalaire" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label7" runat="server" Text="Departement"></asp:Label>
:
<asp:DropDownList ID="DDLDepartement" runat="server">
</asp:DropDownList>
<br />
<br />
<asp:Button ID="BtAddSalarie" runat="server" OnClick="BtAddSalarie_Click"
Text="Add" />
<asp:Button ID="BtMAJSalarie" runat="server" Text="MAJ" />
<asp:Button ID="BtDeletteSalarie" runat="server" Text="Delette" />
<br />
<br />
<asp:GridView ID="GvSalarie" runat="server" AutoGenerateSelectButton="True"
DataKeyNames="SalarieId"
OnSelectedIndexChanged="GvSalarie_SelectedIndexChanged">
</asp:GridView>
</div>
Ci-dessous le code métier de la page « GestionDepartement »
public partial class GestionDepartement : System.Web.UI.Page
{
DbSalarieContext DbContext = new DbSalarieContext();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (DbContext.Departement.Count() > 1)
{
GvDepartement.DataSource = DbContext.Departement.ToList();
GvDepartement.DataBind();
DDLDepartement.DataSource = DbContext.Departement.ToList();
DDLDepartement.DataTextField = "Description";
DDLDepartement.DataValueField = "DepartementId";
DDLDepartement.DataBind();
}
}
}
protected void GvDepartement_SelectedIndexChanged(object sender, EventArgs e)
{
Int32 IdDep = int.Parse(GvDepartement.SelectedValue.ToString());
Departement MonDep = new Departement();
MonDep = DbContext.Departement.Find(IdDep);
TbId.Text = MonDep.DepartementId.ToString();
TbDescription.Text = MonDep.Description;
TbLocalisation.Text = MonDep.Location;
Int32 Val = int.Parse(GvDepartement.SelectedValue.ToString());
GvSalarie.DataSource = DbContext.Salarie.Where(s => s.DepartementId ==
Val).Select(s => new { s.SalarieId, s.Nom, s.Prenom, s.Fonction, s.Salaire
}).ToList();
GvSalarie.DataBind();
}
protected void BtAdd_Click(object sender, EventArgs e)
{
Departement NewDep = new Departement();
NewDep.Description = TbDescription.Text;
NewDep.Location = TbLocalisation.Text;
DbContext.Departement.Add(NewDep);
DbContext.SaveChanges();
GvDepartement.DataSource = (from dep in DbContext.Departement
select dep).ToList();
GvDepartement.DataBind();
}
protected void BtUpdate_Click(object sender, EventArgs e)
{
Departement MonDep = new Departement();
Int32 IdDep = int.Parse(GvDepartement.SelectedValue.ToString());
MonDep = (from dep in DbContext.Departement
where dep.DepartementId == IdDep
select dep).Single();
MonDep.Description = TbDescription.Text;
MonDep.Location = TbLocalisation.Text;
DbContext.SaveChanges();
GvDepartement.DataSource = (from dep in DbContext.Departement
select dep).ToList();
GvDepartement.DataBind();
}
protected void BtDelette_Click(object sender, EventArgs e)
{
Departement MonDep = new Departement();
Int32 IdDep = int.Parse(GvDepartement.SelectedValue.ToString());
MonDep = (from dep in DbContext.Departement
where dep.DepartementId == IdDep
select dep).Single();
DbContext.Departement.Remove(MonDep);
DbContext.SaveChanges();
GvDepartement.DataSource = (from dep in DbContext.Departement
select dep).ToList();
GvDepartement.DataBind();
protected void BtAddSalarie_Click(object sender, EventArgs e)
{
Salarie NewSalarie = new Salarie();
NewSalarie.Prenom = TbPrenom.Text;
NewSalarie.Nom = TbNom.Text;
NewSalarie.Salaire = double.Parse(TbSalaire.Text);
NewSalarie.Fonction = TbFonction.Text;
NewSalarie.DepartementId =
int.Parse(DDLDepartement.SelectedValue.ToString());
DbContext.Salarie.Add(NewSalarie);
DbContext.SaveChanges();
protected void GvSalarie_SelectedIndexChanged(object sender, EventArgs e)
{
Salarie NewSalarie = new Salarie();
NewSalarie = DbContext.Salarie.Find(GvSalarie.SelectedValue);
TbPrenom.Text = NewSalarie.Prenom;
TbNom.Text = NewSalarie.Nom;
TbSalaire.Text = NewSalarie.Salaire.ToString();
TbFonction.Text = NewSalarie.Fonction;
DDLDepartement.SelectedValue = NewSalarie.DepartementId.ToString();
}
Cet exemple de projet contient une simple application CRUD (Create-Read-Update-
Delete) basée sur Entity Framework Code First.
L’application utilise un contexte de base de données pour se connecter à la base de
données. Dans cet exemple, le contexte de base de données utilise une chaîne de
connexion appelée MyDbConnection. Cette chaîne de connexion est définie dans le
fichier Web.config et référencée dans le fichier Models\DbSalarieContext.cs.