Конфигурация приращения идентичности Entity Framework - PullRequest
5 голосов
/ 17 ноября 2011

Можно ли настроить модель Entity Framework таким образом, чтобы при создании базы данных из модели сгенерированные столбцы идентификаторов имели приращение идентификатора, отличное от 1? Например, у меня может быть столбец идентификаторов, в который я хочу добавить последовательность идентификаторов: 1, 11, 21, 31, ... (считая 10 вместо 1).

Меня не слишком беспокоит начальное значение идентификатора, поскольку я могу легко повторно заполнить таблицу с помощью оператора sql после того, как EF сгенерирует схему db. Однако, похоже, что если бы я хотел изменить приращение идентификатора, то я должен заново создать таблицу (по крайней мере, в Microsoft Sql Server). Это может быть довольно сложно сделать автоматически из-за отношений с внешним ключом.

Так есть ли способ настроить столбцы идентификаторов в EF? Если нет, я бы тоже согласился с проверкой и изменением сценариев создания схемы, прежде чем они будут выполнены с БД, если это возможно.

Обновление с некоторыми дополнительными сведениями:

Я уже переопределил метод Seed, предоставляемый DropCreateDatabaseIfModelChanges (включенная реализация IDatabaseInitializer). Здесь я запускаю несколько пользовательских процедур инициализации после создания схемы EF. Я думал, что я мог бы добавить еще один, чтобы изменить каждую спецификацию столбца идентичности после создания. Однако, как отмечалось выше, для изменения приращения идентификатора мне необходимо заново создать каждую таблицу (и ее внешние ключи). В отсутствие простого способа изменить приращение столбца идентификаторов после его создания, я хотел бы настроить столбцы идентификаторов перед их созданием, чтобы EF создавал их с приращением, отличным от 1, или в качестве альтернативы изменил созданные сценарии создания таблиц. EF, прежде чем они будут казнены.

1 Ответ

3 голосов
/ 17 ноября 2011

Вы не можете изменить семя - EF не позволяет этого. Также изменение начального числа в существующей таблице означает удаление столбца и его повторное создание. Таким образом, ответ на эту часть - нет.

Создание сценариев "возможно", но вы потеряете много функций, которые EF делает для вас. Вы, вероятно, проиграете:

  • Создание базы данных - вы получите только скрипт для создания таблиц
  • Проверка согласованности базы данных (поддержка EdmMetadata)

Проверьте эту статью о создании инициализатора для существующей базы данных, которая извлекает

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