Ответ 1
Обычно вы получаете эту ошибку, когда используете попытку VARCHAR (Max), используя:
[Column(TypeName = "VARCHAR")]
[StringLength(n)]
[Index]
public string CreatedBy { set; get; }
где n находится между 1 и 450.
Я использую код Entity Framework 6.1, а моя модель домена ниже.
class Item
{
[Index]
public string CreatedBy { set; get; }
}
Когда я использую update-database для миграции, я получаю следующую ошибку. Однако, насколько я исследовал [Index]
, должен работать как аннотация к string
.
Столбец "CreatedBy" в таблице "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 }));
}
}
}