我正在评估在当前项目中使用ServiceStack的OrmLite,并且需要对创建的索引进行一些控制;我希望尽可能通过数据注释来控制这些内容。在SQL Server 2012上使用ServiceStack OrmLite创建非聚集索引
不幸的是,我没有运气强迫非序列ID的索引是非集群的。使用下表模型:
[Alias("Players")]
public class Player
{
[Index(Unique = true, NonClustered = true)]
public Guid Id { get; set; }
[Required]
[StringLength(128)]
public string Url { get; set; }
}
的CreateTableIfNotExists<Player>()
方法似乎忽略指示以创建非聚集索引,并且创建聚集酮代替(这将导致index fragmentation and poor performance):
我在这里错过了什么?
注意:这是与OrmLite 4.0.52,使用SqlServer2012Dialect
供应商。
感谢您的信息。由于这些属性参数什么都不做/无声无息,为什么它们完全存在? – easuter
@easuter'[Index]'属性仅用于在其他非主键属性上创建索引。主键上可以使用'[PrimaryKey]'和'[AutoIncrement]'属性。 – mythz
我明白这一点,但我没有询问关于创建主键的问题,我问为什么'[Index]'属性的'NonClustered'参数简单地失败了,而不是例如引发'NotImplementedException'。为什么NonClustered和Clustered参数存在,如果他们没有任何目的? – easuter