Disons que j'ai 2 classes dans le modèle: Utilisateur (mappé à la table USERS) et PrivilegedUser (hérite de l'utilisateur, les informations supplémentaires sont stockées dans la table PRIVILEGEDUSERS).Entity Framework: Héritage, change le type d'objet
Maintenant, j'ai une ligne dans USERS (et une instance de User) et je dois convertir cet utilisateur en PrivilegedUser (c'est-à-dire pour créer un enregistrement dans PRIVILEGEDUSERS avec le même ID). Existe-t-il un moyen de le faire sans supprimer/insérer? Le problème est que vous n'avez pas de représentation PRIVILEGEDUSERS dans le modèle, vous ne pouvez donc pas créer uniquement cette partie de PrivilegedUser.
C'était juste un exemple. PrivilegedUser peut avoir un rabais ou un gestionnaire personnel ou autre en plus aux propriétés utilisateur ordinaires. Dans le même temps, il existe d'autres tables qui doivent référencer les utilisateurs quel que soit le type d'utilisateur concret. Je l'ai implémenté en utilisant le mode d'héritage Table-per-Type. Au niveau de la base de données, il est très simple de convertir les utilisateurs d'un type à un autre (il suffit d'insérer ou de supprimer un enregistrement de la table d'extension). Mais dans EF vous avez seulement UserSet qui stocke les objets User et PrivilegedUser. C'est pourquoi je demande est-il possible de remplacer objet utilisateur existant avec PrivilegedUser en conservant Id existant et sans supprimer l'enregistrement de la table USERS.
Ceci est correct. Une instance devrait/ne peut jamais changer de type. Alors que se passe-t-il lorsqu'un utilisateur devient privilégié ou non privilégié? –
@Craig, des nouvelles? J'ai rencontré la même question. – Shimmy
@Shimmy, "nouvelles?" Quoi de neuf? Si vous pensez que votre objet doit changer de type, alors vous utilisez probablement l'héritage. @ La réponse de DanDan est encore une meilleure idée. –