8

Иногда структура сущностей генерирует ужасные имена свойств навигации. Используя первый подход к базе данных, как лучше всего это исправить?Переименование свойств навигации

Я могу редактировать шаблоны t4 по своему вкусу, но как бы связать эти измененные имена с фактическими отношениями? Должен ли я просто написать сценарий для изменения файла edmx? Очевидно, что делать это вручную - вряд ли вариант.

+0

В EF5 отсутствует edmx. Вы говорите об EF4? – zsong

+0

@sza, это странно, он утверждает, что является Версии 5 в Reference Properties. То, что я на самом деле делал, было «ADO.NET Entity Data Model». –

+0

Я думаю, что эта тема содержит более подробное объяснение того, что нужно изменить в шаблонах EF 5.x T4, чтобы достичь этого. http://stackoverflow.com/questions/12937193/improve-navigation-property-names-when-reverse-engineering-a-database – Bostrong

ответ

1

Да, вы можете. В большинстве случаев вам просто нужно переименовать этот NavPr из дизайнера модели EF и сохранить модель. Затем EF переименовывает NavPr в классы объектов DbContext.tt и не вызывает никаких проблем.

Если у вас возникли проблемы с именем рационализации, щелкните правой кнопкой мыши по переименованному NavPr и выберите свойства. Затем измените свойство Association на фактическое отношение в базе данных.

Если вы не видите там относительного отношения, удалите этот объект и все другие объекты, которые имеют к нему отношение, щелкните правой кнопкой мыши на дизайнере моделей и выберите Update model from database. Затем просто переименуйте этот уродливый NavPr и сохраните модель.

+3

Я не хочу делать это в дизайнере моделей. Часто для этого слишком много таблиц. Кроме того, если возникнет необходимость в создании новой модели, все изменения будут потеряны. То, что я хотел бы, - это способ сказать EF, какие соглашения об именах использовать. –

+0

Вы просто можете удалить соглашение об именах EF, переопределив 'OnModelCreating' в DbContext, и, таким образом, вы должны все рассказать о свойствах именования, внешних ключах и т. Д. Для EF ...! Какой путь проще? – AminSaghi

+2

'OnModelCreating' только для Code First, не так ли? Мне нужно решение с использованием базы данных First. –

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