2010-12-15 3 views
0

На скриншоте ниже приведена сущность (URL) в моей модели. Поле ParentId является саморегуляционным FK (указывает на Url.Id). Вы можете увидеть эту навигацию внизу скриншота.Самонаводящаяся FK, генерирующая странно

alt text

В моей SQL и мой DB, который я генерировать EDMX от, автореферентное FK называется FK_Urls_Parent:

-- Creating foreign key on [ParentId] in table 'Urls' 
ALTER TABLE [Urls] 
ADD CONSTRAINT [FK_Urls_Parent] 
    FOREIGN KEY ([ParentId]) 
    REFERENCES [Urls] 
     ([Id]) 
    ON DELETE NO ACTION ON UPDATE NO ACTION; 

Мои вопросы:

  1. Почему EF генерирует Urls1 и Url1 только из этого FK? Url1 - это свойство 0 или 1, которое является «FromRole» Urls1. Urls1 - это 'FromRole' Urls 'ToRole' Urls1. Кажется, что EF создает свойство навигации, такое же, как и таблица Url. Зачем это делать, и могу ли я сделать что-то, чтобы просто создать одно требуемое свойство навигации: Urls1?
  2. Хорошо, так не так важно, но могу ли я управлять именем свойства Navigation на основе имени FK или чего-то в БД? Я ненавижу, что он называет его «Url1». Я бы предпочел «Родитель», но не хочу, чтобы вручную менять его в дизайнере каждый раз, когда я регенерирую модель.

Спасибо.

ответ

2

Это моделирование обеих сторон отношений. Другими словами, одним из свойств будет запись, на которую указывает эта запись ParentId. Другой будет запись (-и), чье поле ParentId указывает на эту запись. Вы можете отключить одну сторону в свойствах отношений или переименовать их в смысл. Такие, как, например, ParentUrl и ChildUrls.

Я не уверен на 100%, как добраться до диалога отношений свойств, не открывая программу самостоятельно, чего я не могу сейчас. Я знаю, что для меня это отображается в окне свойств по умолчанию (справа) после выбора ссылки.

Поскольку это изменение как-то постоянное в регенерации моделей, я не знаю, как это сделать. Надеюсь, кто-то еще узнает, потому что это тоже сэкономит мне много времени!

+1

Это было бы ChildUrls, поскольку один родительский объект имеет множество дочерних элементов. – 2010-12-15 23:12:50

Смежные вопросы