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.