我首先使用Entity Framework 6.1代码,我的域名模型如下所示。
class Item
{
[Index]
public string CreatedBy { set; get; }
}
当我使用update-database进行迁移时,我收到以下错误。但是,据我所研究,[Index]
应该作为string
的注释。
专栏' CreatedBy'在表格'dbo.Items'是一种无效的类型,无法用作索引中的键列。
答案 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 }));
}
}
}