2012-04-30 3 views
0

У меня есть таблица базы данных, называемая «элемент», которая имеет поле саморегуляции, называемое «itemParentID». Когда я создаю EDMX и модели, я получаю доступ к «item.item1», который является родителем текущего элемента и «item.items1», который представляет собой набор дочерних элементов. У меня также есть свойство item.itemParentID, но я редко использую его напрямую.Где EF4 DB сначала получает свои имена отношений?

Как эти имена «item1» и «items1» выбираются? Я генерирую EDMX из базы данных и хотел бы, чтобы имена автоматически были «topic.Parent» и «topic.Children», так что мне не пришлось бы касаться сгенерированного кода или создавать дополнительный код в частичных файлах.

ответ

1

Это логика, закодированная в генерацию EDMX. Имя выведено из имени связанного типа объекта, но оно не очень хорошо работает в случае отношений самореференции или нескольких отношений с одним и тем же типом. В таких случаях генератор будет добавлять эти числа к именам свойств.

Единственный способ исправить это - переименование свойств в конструкторе, но будьте осторожны, что это также единственная модификация, которая иногда теряется при обновлении модели из базы данных.

+0

Я вижу. Считаете ли вы тогда, что мой подход к созданию аксессуаров для них в частичном будет хорошей идеей? Это было бы просто; что-то вроде 'public Item Parent {get {return Item1;}}' - только для чтения кода. – Nenotlep

+1

Но если вы хотите получить доступ к этим отношениям в запросах или для активной загрузки, вам все равно придется использовать оригинальные свойства, поскольку Linq-to-entities не могут использовать ваши пользовательские свойства из вашего частичного класса. –

0

Выберите свойства в дизайнере модели (edmx) и откройте окно свойств.

Здесь вы можете указать имена.

Я не знаю, как изменить имена, которые автоматически генерируются.

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