Подтвердить что ты не робот

Создание индекса строки с первым кодом

Я использую код Entity Framework 6.1, а моя модель домена ниже.

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

Когда я использую update-database для миграции, я получаю следующую ошибку. Однако, насколько я исследовал [Index], должен работать как аннотация к string.

Столбец "CreatedBy" в таблице "dbo.Items" имеет тип, который недопустим для использования в качестве ключевого столбца в индексе.

4b9b3361

Ответ 1

Обычно вы получаете эту ошибку, когда используете попытку VARCHAR (Max), используя:

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

где n находится между 1 и 450.

Ответ 2

Если вы используете 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 }));
        }
    }
}