Существует ли метод «на уровне базы данных», позволяющий остановить EF 4.2, добавляющий пробелы в автоматически созданные имена таблиц и столбцов?

#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 . Я пытаюсь воспроизвести это здесь … чтобы посмотреть, отображаются ли здесь пробелы.