2009-02-14 12 views
0

Je suppose que je ne suis pas sûr de savoir comment l'héritage Linq est supposé fonctionner. J'ai une entité "Utilisateur" et je veux avoir deux entités supplémentaires appelées "Créateur" et "Assigné" qui héritent de l'entité "Utilisateur" (elles devraient fondamentalement avoir exactement les mêmes propriétés que l'entité Utilisateur) Je n'ai pas besoin de propriétés supplémentaires. Je peux le faire très bien dans le concepteur.Linq to SQL Héritage Question

Le problème est que lorsque j'essaie d'associer les entités héritées à une autre entité - je n'ai accès à aucune des propriétés de l'entité de base. Est-ce que je ne suis pas censé avoir accès à ces liens avec d'autres entités? Il me semble que je devrais.

Répondre

0

Cela ressemble plus à une relation plutôt que de l'héritage pour moi. C'est-à-dire que toutes les entités sont des utilisateurs, mais certains utilisateurs ont une relation de créateur avec d'autres et certains ont une relation assignée. Probablement la façon la plus simple de modéliser ceci est d'avoir une table de jointure pour les créateurs et une autre pour les assignés. Créez des relations de clé étrangère vers la table utilisateur à partir des deux colonnes de la table de jointure. Lorsque vous faites glisser toutes ces tables sur la surface du concepteur, chaque utilisateur obtient createdBy/created et assigné/assigné à des ensembles d'entités. Vos contraintes db, je présume, le limiteront pour que chaque utilisateur n'ait qu'un seul créateur et qu'un utilisateur ne soit pas affecté à plus d'une autre utilisation (ou peut-être pas, selon vos règles).

user table 
user_id int identity not null primary key 
user_name varchar 
.... 

created_by 
created_by_id int identity not null primary key 
creator int not null, FK to user.user_id 
createe int not null, FK to user.user_id 
(with a unique index on creator/createe -- or both could be the PK) 
(constraint creator <> createe) 

assigned_to 
assigned_to_id int identity not null primary key 
owner_id int not null, FK to user.user_id 
assignee_id int not null, FK to user.user_id 
(with a unique index on assignee_id -- or not) 
(constraint owner_id <> assignee_id -- or not)