实体框架Code First:如何指定索引名称

4
我正在使用Code First生成我的数据库。我还将使用全文本搜索。但是,由于EF给出的主键索引名称是随机的,因此我无法以编程方式创建全文本索引。是否有一种方法可以明确设置这个索引名称呢?
例如,我有一个以下的Items类:
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

尝试使用 [Key] 属性?

using System.ComponentModel.DataAnnotations;

[Key]
public string ItemId { get; set; }

2
EF并未提供指定键名甚至索引名的任何可能性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接