2010-10-01 5 views
0

Est-il possible d'avoir un héritage "table par type" dans Entity Framework 4 si la table dérivée a une clé primaire composite?Entity Framework 4: Héritage (table par type) - La table dérivée a un PK composite

Voici ma configuration de table:

TABLE: ConfigurationKey (Base Entity) 
PK: Id 

TABLE: ConfigurationKey_Device (Derived Entity) 
PK: ConfigurationKeyId (FK to ConfigurationKey.Id) 
PK: DeviceId (FK to Device.Id) 

Pour ce que ça vaut, ConfigurationKey va être abstraite et d'autres types vont tirer de ConfigurationKey.

Utilisation du concepteur EF, j'ai:

  • Ajouté la règle de l'héritage
  • supprimé ConfigurationKeyId de ConfigurationKey_Device
  • supprimé le FK reliant ConfigurationKey_Device à ConfigurationKey
  • Mise à jour la cartographie du ConfigurationKey_Device.ConfigurationKeyId colonne à la propriété Id héritée.

L'erreur que je reçois maintenant est:

Erreur 3003: Problème de cartographie fragments à partir de la ligne xxx: Toutes les propriétés clés (ConfigurationKeys.Id) du moût EntitySet ConfigurationKeys être mappé à toutes les clés propriétés (ConfigurationKey_Device.ConfigurationKeyId, ConfigurationKey_Device.DeviceId) de table ConfigurationKey_Device.

Merci, Chris

+0

Il est préférable de ne pas utiliser PK composite avec EF. – garik

Répondre

0

Le message d'erreur répond à votre question elle-même.
Vous essayez actuellement d'hériter d'une entité avec une clé à une colonne avec une entité avec une clé à deux colonnes.
Il semble que la meilleure solution soit d'avoir un ComplexType englobant l'ensemble commun de propriétés, soit une interface commune implémentant les fonctionnalités nécessaires.

+0

Oui, ce que j'essayais de faire n'avait pas de sens. Ce que je pensais être une entité dérivée ressemblait plus à une table de réunion. Merci pour vos commentaires. – Kip

Questions connexes