首先使用代码创建字符串索引

本文关键字:创建 字符串 索引 代码 | 更新日期: 2023-09-27 18:35:42

我首先使用实体框架 6.1 代码,我的域模型如下。

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

当我使用更新数据库进行迁移时,出现以下错误。但是,就我所研究而言,[Index]应该作为string的注释。

表 'dbo' 中的"创建者"列。Items' 的类型不能用作索引中的键列。

首先使用代码创建字符串索引

通常,当您使用 VARCHAR(Max) 时,您会收到此错误,请尝试使用:

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

其中 n 介于 1 和 450 之间。

如果您使用 EntityTypeConfiguration aka 映射:

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 }));
        }
    }
}