Подтвердить что ты не робот

Значимые имена для свойств навигации с использованием Entity Framework

Я использую ADO.NET Entity Framework для импорта моей модели из базы данных. Таблица в моем db имеет кучу внешних ключей, все с абстрактными именами, например. FKDevice132610.

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

Ef model

В этом случае Devices1 является ParentDevices, а Devices2 - ChildDevices. Есть ли способ, которым я могу ввести эту информацию в мой внешний ключ (скажем, используя описание или имя), чтобы Entity Framework импортировала значимые имена для моих свойств навигации?

4b9b3361

Ответ 1

Как я знаю, в настоящее время нет способа сделать это. Так работает нынешний дизайнер. Что еще хуже, если вы переименуете эти свойства для исправления имен, обновляющих модель из базы данных, иногда будут перезаписывать ваши изменения.

Усовершенствование именования свойств навигации отслеживается этим рабочим элементом - http://entityframework.codeplex.com/workitem/125

Ответ 2

Интересно, приведет ли поиск к "modelBuilder.Conventions.Remove" к решению. Хотел бы я больше помочь, но я только начинаю изучать EF. Вышел в аналогичную ситуацию, когда у меня было несколько полей, ссылающихся на один и тот же ID... и я не помню, что было вокруг.

Ответ 3

Четыре года спустя...
До тех пор, пока команда EF не решит эту проблему, одним из возможных способов обхода может быть анализ файла .edmx с помощью внешнего инструмента и замена всех текстов, начиная с <NavigationProperty Name= более значимыми именами навигации.
Будучи XML, чрезвычайно легко разобрать и найти такие свойства, как множественность, имя FK и т.д.