2010-08-25 2 views
8

Я разработал модель данных сущности с двумя сущностями, между которыми существует отношение «многие-многие». Когда я автоматически генерирую SQL-код для создания базы данных для этой модели, он создал таблицу (два столбца), чтобы отслеживать эту связь «многие-ко-многим». Тем не менее, эта таблица имеет PRIMARY KEY NONCLUSTERED на обеих колонках.Entity Framework Множество-много кластеризованных или некластеризованных индексов

Поскольку я хочу, чтобы это работало на SQL Azure, которое не любит таблицы с только некластеризованными индексами, мне было интересно, есть ли хороший способ генерировать генерации кода для кластеризованных индексов? Благодаря!

+0

Вы пытались дать ему суррогатный ключ? – Nix

+0

Я в одной лодке. Я понимаю, что это старый вопрос, но на него, похоже, не ответили. Azure по-прежнему не поддерживает некластеризованные ключи, которые генерирует EF. – Allan

ответ

3

У меня есть еще один файл под названием Model.indexes.sql, содержащий скрипты для создания дополнительных индексов помимо базовых, которые генерирует EF, например, для оптимизации производительности.

Хотя это не идеально, я добавил в этом Отбросить индекс и создать для каждого EF ассоциации для преобразования Некластеризованных индексов в индексированные из них:.

ALTER TABLE [DBO] [MyAssociation] DROP CONSTRAINT [PK_MyAssociation] GO ALTER TABLE [DBO] [MyAssociation] ADD CONSTRAINT [PK_MyAssociation] ПЕРВИЧНЫЙ КЛЮЧ CLUSTERED ([Table1_Id], [Table2_Id] ASC). GO

Это выполняется после каждой «Генерации базы данных из модели ...». Мне хотелось бы более элегантное решение.

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