2014-04-16 5 views
0

J'utilise une implémentation DB First d'Entity Framework et j'ai rencontré un problème avec un besoin de colonne calculée et l'interaction avec une vue ...Entity Framework (6.x), colonnes calculées et INotify

Scénario:

utilisateur a FirstName et LastName. Dans une zone de liste, je souhaite utiliser un nom d'affichage généré à partir de Prénom et Nom. Généralement, assez simple. Le problème vient du moment où le prénom ou le nom est édité. J'ai étendu mes entités avec INotifyPropertyChanged et implémenté cela dans le template T4. J'ai étendu l'entité Utilisateur pour créer une propriété DisplayName. Dans la vue j'utilise un CollectionViewSouorce basé sur le DisplayName.

Le problème survient lorsque le nom d'un utilisateur est modifié, mais aucune notification ne se produit car la modification est apportée à FirstName ou à LastName, et non à DisplayName. Par conséquent, CollectionViewSource n'obtient jamais de notification de modification pour DisplayName.

Je pourrais, manuellement, ajouter un OnPropertyChanged ("DisplayName") à l'entité User dans les propriétés FirstName et LastName, mais cela serait remplacé la prochaine fois que je mettrais à jour mon modèle de la base de données.

Des idées sur comment faire ce travail?

Merci.

J

Répondre

0

Pour mémoire ...

Je suis allé avec une extension de classe partielle et juste programme pour la OnPropertyChanged déclenché DisplayName chaque fois que les propriétés constitutives ont été modifiées et enregistrées.

0

Je vais pour l'une des options suivantes:

  • créer partial class User à votre entité User avec OnFirstNameChanged, OnLastNameChanged méthodes mises en œuvre en elle, la classe reste inchangé lorsque vous RE- générer des classes à partir du modèle.

  • poignée context.ObjectStateManager.ObjectStateManagerChanged événement de votre ObjectContext http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager%28v=vs.100%29.aspx

  • ajuster le modèle t4 (basé sur votre question, vous savez comment y faire face) à appeler la méthode personnalisée lorsque FirstName et LastName setter de propriété est généré.

Questions connexes