Introduction par l'exemple à Entity Framework 5 Code First
Bonjour,
J'ai mis en ligne "Introduction par l'exemple à Entity Framework 5 Code First". C'est un tutoriel destiné en priorité aux débutants même s'il peut intéresser d'autres publics.
Citation:
- Création d'une base SQL Server 2012 à partir d'entités EF5 ;
- Ajout, Modification, Suppression d'entités ;
- Requêtage du contexte de persistance avec LINQ to Entities ;
- Gestion des entités détachées ;
- Lazy et Eager loading ;
- Concurrence d'accès aux entités ;
- Synchronisation du contexte EF5 avec la base de données ;
- Etude d'une application ASP.NET avec une architecture multi-couche ayant EF5 comme ORM et SQL Server 2012 comme SGBD ;
- Portage de l'application ASP.NET sur le SGBD MySQL 5.5.28 ;
- Portage de l'application ASP.NET sur le SGBD Oracle Database Express Edition 11g Release 2 ;
- Portage de l'application ASP.NET sur le SGBD PostgreSQL 9.2.1 ;
- Portage de l'application ASP.NET sur le SGBD Firebird 2.1.
L'application ASP.NET étudiée ci-dessus est celle utilisée dans le document [
http://tahe.developpez.com/dotnet/pam-aspnet] où l'ORM était NHibernate et le SGBD MySQL 5. L'ORM est ici remplacé par EF5 et cinq SGBD sont testés.
Outils utilisés :
- Visual Studio Express 2012 pour le bureau ;
- Visual Studio Express 2012 pour le web ;
Vous pouvez sur ce forum, laisser des commentaires, signaler des erreurs, des difficultés, échanger des idées.
Modification de l'étude de cas
Bonjour,
Je remercie l'auteur du tutoriel. Je l'utilise pour apprendre l'utilisation d'Entity Framework.
Je recherchais un moyen de spécifier dans le code la contrainte d'unicité de la table RV.
Je n'ai pas trouvé comment faire.
Mais je suis tombé sur la possibilité de spécifier une clé primaire composé dans la classe "RdvMedecinsContext" dans la méthode "OnModelCreating". Personnellement, je trouve dommage de spécifier la clé composé dans le contexte plutôt que dans l'entité.
Au niveau conception, s'agit il d'une solution convenable ? (autrement dit, n'ai je pas fais une faute de conception)
Elle est spécifiée par le code suivant :
Code:
1 2
|
modelBuilder.Entity<Rv>().HasKey(r => new { r.Jour, r.ClientId }); |
Cependant, je ne vois pas comment manipuler cette clé composé. J'ai donc pensé à cette solution.
En modifiant l'entité Rv pour que l'id ne soit pas une clé primaire mais plutôt un hashcode défini
ci-dessous :
Code:
1 2 3 4 5 6 7
|
[NotMapped]
public virtual int? Id {
get {
return this.jour.GetHashCode() + this.clientId.GetHashCode() ;
}
} |
Il s'agit juste d'une solution théorique que je propose et dont j'aimerais avoir des critiques...