Je commence tout juste à utiliser Entity Framework de Microsoft, dans le cadre d'un projet MVC, puisque MS semble vraiment le mettre en avant, et je rencontre quelques problèmes. Dans ma base de données, il y a plusieurs tables de consultation liées à une seule table via des clés étrangères. Dans le cadre de l'entité, j'essaie de les combiner en une seule afin d'avoir une vue unique simplifiée pour ces données dans mon modèle. Cependant, cela ne semble pas possible du point de vue du concepteur. Y a-t-il quelque chose d'évident qui m'échappe ? Existe-t-il un moyen de modifier manuellement le fichier edmx pour produire ce type de modèle ?
Réponse
Trop de publicités?Pour l'instant, les clés étrangères et les tables de consultation dans Entity Framework sont une PEINE.
EF avec LINQ rend obtenir vos données en toute simplicité, et à première vue, c'est regards facile à mettre à jour, mais avec les tables de consultation, les choses se compliquent (pour l'instant... lisez la suite...)
Je ne sais pas comment vous pourriez "combiner" vos tables de recherche en une seule table. Si chaque table contient un type différent d'"entité de recherche", elles doivent être représentées séparément dans votre GED. Je suppose que vous avez des difficultés à mettre à jour les clés étrangères d'un enregistrement dans les tables de consultation. C'est parce que c'est un casse-tête.
Modification des valeurs des clés étrangères :
MyDBEntities _db = new MyDBEntities();
//get a Person
MyDBEntities.Person person = (from p in _db.Persons
where p.Id = 1
select p).First();
// This sets the foreign key value in the Person table on the PersonType field
person.PersonTypeReference = new EntityKey("MyDBEntities.PersonType", "PersonTypeId", 3)
En prochaine version de l'Entity Framework disposera d'un nouveau concept appelé "FK Associations". Cela permettra de retrouver l'utilité de définir directement la valeur de la clé étrangère plutôt que de devoir créer et définir une EntityKey.
HTH.