首先使用Code创建字符串索引

时间:2014-12-29 10:25:52

标签: c# sql-server performance entity-framework indexing

我首先使用Entity Framework 6.1代码,我的域名模型如下所示。

class Item
{
    [Index]
    public string CreatedBy { set; get; }
} 

当我使用update-database进行迁移时,我收到以下错误。但是,据我所研究,[Index]应该作为string的注释。

  

专栏' CreatedBy'在表格'dbo.Items'是一种无效的类型,无法用作索引中的键列。

2 个答案:

答案 0 :(得分:82)

通常在使用VARCHAR(Max)尝试时会出现此错误:

[Column(TypeName = "VARCHAR")]
[StringLength(n)]
[Index]
public string CreatedBy { set; get; }

其中n介于1和450之间。

答案 1 :(得分:4)

如果您使用EntityTypeConfiguration aka mappings:

public class MyPocoEntitiyTypeConfig<T> : EntityTypeConfiguration<T> where T:class
{

}

public class MyPocoEnt
{
    public virtual string MyProp { get; set; }
}

public class MyPocoEntMapping : MyPocoEntitiyTypeConfig<MyPocoEnt>
{
    public MyPocoEntMapping()
    {
            Property(x => x.MyProp).HasMaxLength(300);
            Property(x => x.MyProp).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("MyProp") { IsUnique = true }));
        }
    }
}