Как остановить EF4.1-код, чтобы создать индекс Culstered для объекта PK
Вопрос
С следующим классом 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'
Как только вы получите имя в своем пользовательском инициализаторе, вы можете изменить старый индекс и создать новый.