Entity Framework 6.1 (с кодовым первым) добавила возможность добавления индексов через IndexAttribute
. Атрибут принимает параметр для указания того, должен ли индекс кластеризоваться или не кластеризоваться.
В то же время AFAIK, Entity Framework требует, чтобы каждый объект имел первичный ключ (аннотированный с помощью KeyAttribute
), и этот первичный ключ всегда создается как кластеризованный ключ.
Поэтому, как только я применяю IndexAttribute
с IsClustered = true
, я получаю сообщение об ошибке, потому что из-за ключа уже есть кластеризованный индекс.
Итак, как я могу создать кластеризованный индекс, который не является первичным ключом, используя IndexAttribute
? Является ли свойство IsClustered
для IndexAttribute
применимым вообще?
(Для немного большего контекста: я сопоставляю таблицу, которая используется только для чтения через запросы LINQ. Мне не нужно фактически вставлять, обновлять или удалять объекты из этой таблицы. Поэтому мне не нужно первичный ключ вообще. В идеале мне нужна таблица без первичного ключа, но с уникальным кластеризованным индексом, оптимизированным для чтения.)
Изменить (2014-04-11): См. также https://entityframework.codeplex.com/workitem/2212.