Entity Framework Code First: Как указать имя индекса - PullRequest
4 голосов
/ 09 марта 2011

Сначала я использую код для генерации базы данных. Я также буду использовать полный текст для поиска. Однако я не могу создать полнотекстовый индекс программно, потому что имя индекса первичного ключа, заданное EF, является случайным. Есть ли способ явно установить это?

Например, у меня есть класс предметов, как показано ниже:

public class Item
{

    public string ItemId { get; set; }
    public string ShortName { get; set; }
    public decimal Price { get; set; }
    public string Description { get; set; }
    public string ImageUri { get; set; }
    public string Tags { get; set; }

    public int CategoryId { get; set; }
    public string LastModifiedBy { get; set; }

    public virtual User LastModifiedBy { get; set; }
    public virtual ItemCategory Category { get; set; }
    public virtual ICollection<ItemMetaDataValue> MetaData{get;set;}
    public virtual ICollection<PriceHistoryLog> PriceHistory { get; set; }
}

Теперь я хочу, чтобы EF создал полнотекстовый каталог для свойства Tags, чтобы я вызывал что-то подобное, используя метод DbContext.SqlCommand ().

CREATE FULLTEXT CATALOG [DEFAULT]WITH ACCENT_SENSITIVITY = OFF
AS DEFAULT
AUTHORIZATION [dbo]

CREATE FULLTEXT INDEX ON [dbo].[Items] KEY INDEX [PK__Items__727E838B07020F21] ON ([DEFAULT]) WITH (CHANGE_TRACKING AUTO)

ALTER FULLTEXT INDEX ON [dbo].[Items] ADD ([Tags])

ALTER FULLTEXT INDEX ON [dbo].[Items] ENABLE

Однако, как вы могли заметить, имя индекса первичного ключа отличается от ожидаемого: PK_ Items _727E838B07020F21. Есть ли способ явно указать этот ключ?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

Попробуйте использовать атрибут [Key]?

using System.ComponentModel.DataAnnotations;

[Key]
public string ItemId { get; set; }
2 голосов
/ 09 марта 2011

EF не предоставляет возможности указать даже имя ключа, не говоря уже об имени индекса.

...