Значимые имена для свойств навигации с использованием Entity Framework - PullRequest
12 голосов
/ 06 сентября 2011

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

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

Ef model

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

Ответы [ 3 ]

5 голосов
/ 06 сентября 2011

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

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

0 голосов
/ 19 августа 2015

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

0 голосов
/ 06 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...