Entity framework 实体框架6.1.1索引的命名约定

Entity framework 实体框架6.1.1索引的命名约定,entity-framework,ef-code-first,naming-conventions,entity-framework-6.1,Entity Framework,Ef Code First,Naming Conventions,Entity Framework 6.1,我了解如何将约定添加到代码优先(使用迁移)项目中。我成功地执行了表名,甚至将GUID Id字段更改为非集群 但是我还没有找到如何在没有名字的情况下更改EF提供的默认索引名 [Index(IsUnique = true)] public string Code { get; set; } [Index] public string Description { get; set; } 我有这两个要求。顶部索引应命名为UX\[schema]\[table]\[code,第二个IX\[schema]

我了解如何将约定添加到代码优先(使用迁移)项目中。我成功地执行了表名,甚至将GUID Id字段更改为非集群

但是我还没有找到如何在没有名字的情况下更改EF提供的默认索引名

[Index(IsUnique = true)]
public string Code { get; set; }

[Index]
public string Description { get; set; }
我有这两个要求。顶部索引应命名为
UX\[schema]\[table]\[code
,第二个
IX\[schema]\[table]\[Description

我还需要支持多个列索引,其中IsUnique仍然是UX,但列部分是所有列的驼峰式组合(例如,
UX\u[schema]\u[table]\uCodeDescription,如果上面的两列位于同一索引中)

我假设我需要在IndexAttributeConvention之后添加这个,以便所有当前功能都可以工作并创建IndexAnnotations。但是如果在属性(或结构)中留空,我找不到索引接收初始名称的位置


提前感谢。

您是否尝试过此注释:[Index(“IndexName”)] 或者举个例子:

[Index("IndexName", IsUnique = true)]
public string Code { get; set; }

是的,这就是我们目前解决这个问题的方式。但它允许我们的开发人员创建他们想要的任何名称,而不是遵循我们现有的标准。我的问题是如何添加约定来命名索引。