Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Matthieu MEZIL

I love .Net

Abonnements

EntityReference change key

A partir de Northwind, je voulais rajouter à la classe Product la méthode suivante :

public void SetCategory(int categoryID)

{

    // ???

}

Le problème c'est que depuis la classe Product, on n'ai pas censé connaître le contexte auquel Product est attaché (d'ailleurs, il peut n'être attaché à aucun contexte). Il n'est donc pas possible de passer par la propriété Category. En effet, lors de l'affectation d'une catégorie obtenue à partir d'un autre contexte, on aurait une exception.

L'idée est donc d'utiliser la propriété CategoryReference de type System.Data.Objects.DataClasses.EntityReference<Category> et sur laquelle on a une propriété EntityKey. Il suffit ensuite de changer la valeur de l'EntityKey.

L'EntityKey a une propriété EntityKeyValues de type System.Data.EntityKeyMember[]. Dans notre cas, la clé de Category est uniquement constituée de la colonne CategoryID. On pourrait donc être tenté de faire :

CategoryReference.EntityKey.EntityKeyValues[0].Value = categoryID;

Mais cela ne marche pas ! En effet, l'EntityKeyMember est immutable (ie, il n'est pas possible de modifier la propriété Key ou Value une fois qu'elle a été affectée).

La solution consiste donc à recréer complètement l'EntityKey :

CategoryReference.EntityKey = new EntityKey("NorthwindEntities.Categories", "CategoryID", categoryID);

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié vendredi 25 juillet 2008 07:28 par Matthieu MEZIL

Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 2 heures et 6 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 3 heures et 20 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 16 heures et 59 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 17 heures et 56 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 18 heures et 11 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18