Вопрос

С следующим классом Simple Entity, EF4.1 Code-First создаст кластерный индекс для PK UserId столбец, когда интриализация базы данных.

    public class User
    {
        [Key]
        public int UserId { get; set; }
        public int AppId  { get; set; }
        public string UserName { get; set; }
    }

Ради производительности, мои цели в дизайне - сохранить сгенерированные Users Таблица физическая кластера в соответствии с AppId COULMN не к PK.

На своем классе инициализатора я попытался вручную отбросить индекс кластерного кластера PK вручную и создать любой кластерированный индекс, который мне нужен, но нет подсказки, чтобы предсказать автогенерированное имя PK__Users__25518C17 Для индекса!

Я новичок в мире кода, и действительно не знаю, есть ли какой-нибудь обходной путь для моих целей дизайна.

заранее спасибо

Это было полезно?

Решение

Вам не нужно предсказывать имя автоматического сгенерированного индекса. Вам просто нужно выбрать имя индекса. Для SQL Server вы можете использовать запрос, как:

SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
    I.object_Id = T.object_Id
WHERE I.is_primary_key = 1 
    AND T.Name = 'Users'

Как только вы получите имя в своем пользовательском инициализаторе, вы можете изменить старый индекс и создать новый.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top