#entity-framework #entity-framework-4.1 #conventions #ef4-code-only #fluent-interface
#entity-framework #entity-framework-4.1 #соглашения #ef4-только для кода #fluent-интерфейс
Вопрос:
Я использую Entity Framework 4.2 в «режиме» только для кода. Я разрешаю ему автоматически генерировать мою базу данных из модели.
Однако он добавляет пробелы к моим именам таблиц и столбцов на основе заголовка — например, CustomerOrder
класс сопоставляется с [Customer Orders]
таблицей, а ProductNumber
свойство сопоставляется с [Product Number]
полем.
Есть ли какой-либо способ предотвратить это — за исключением настройки каждой таблицы и имени свойства через Fluent API (что я знаю, как сделать)?
Это что-то новое в 4.2?
Комментарии:
1. Привет… Я не смог воспроизвести это поведение с помощью EF 4.2 CTP, который у меня есть здесь. Не могли бы вы рассказать подробнее о том, как это сделать?
2. На самом деле, я думаю, что это может быть сторонняя библиотека, вызывающая побочный эффект. Я изучаю это только сейчас. Это унаследованное приложение.
Ответ №1:
Вы можете переопределить OnModelCreating
свои DataContext
и изменить соглашения, используемые entity Framework … может быть соглашение о добавлении пробелов перед прописными буквами. Удалите соглашение, и все готово.
Соглашения находятся внутри modelBuilder
объекта, переданного в качестве аргумента этому методу. У него есть Conventions
свойство, которое вы можете проверить и посмотреть, существует ли там соглашение.
Комментарии:
1. Спасибо за ответ. Я просмотрел список соглашений, но не смог увидеть очевидного. Вы знаете, какой это? Я раньше этого не замечал, поэтому интересно, является ли это новым.
2. Я посмотрел на Reflector, чтобы увидеть все типы соглашений в EntityFramework 4.2, но я не нашел никого, кто предлагал бы добавлять пробелы, единственное соглашение об именовании, которое я нашел, было
PluralizingTableNameConvention
. Я пытаюсь воспроизвести это здесь … чтобы посмотреть, отображаются ли здесь пробелы.