2009-02-14 3 views
0

Я предполагаю, что я не совсем уверен, как предполагается наследование Linq.Linq to SQL Inheritance Вопрос

У меня есть объект «Пользователь», и я хочу иметь два дополнительных объекта, называемых «Создатель» и «Назначенный», которые наследуются от объекта «Пользователь» (в основном они должны иметь только те же точные свойства, что и объект User) Мне не нужны дополнительные свойства. Я могу сделать это отлично в дизайнере.

Проблема в том, что когда я пытаюсь связать унаследованные объекты с другим объектом - у меня нет доступа к каким-либо свойствам из базового объекта. Разве я не должен иметь доступ к тем, кто связан с другими сущностями? Кажется, мне нравится.

ответ

0

Это больше похоже на отношения, а не наследование для меня. Это все сущности - пользователи, но некоторые пользователи имеют отношение создателя к другим, а некоторые имеют назначенные отношения. Вероятно, самый простой способ смоделировать это - иметь таблицу соединений для создателей, а другую - для правопреемников. Создайте отношения внешнего ключа обратно в таблицу пользователя из обоих столбцов в таблице соединений. Когда вы перетаскиваете все эти таблицы на поверхность конструктора, каждый пользователь будет создан createdBy/created и присваивать/присваивать наборам объектов. Я полагаю, ваши ограничения на db ограничивают его, так что у каждого пользователя есть только один создатель, и пользователю не назначается более одного другого использования (или, может быть, нет, в зависимости от ваших правил).

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)