J'utilise le code Entity Framework 6.1 en premier et mon modèle de domaine est ci-dessous.
class Item
{
[Index]
public string CreatedBy { set; get; }
}
Lorsque j'utilise update-database pour la migration, j'obtiens l'erreur suivante. Cependant, pour autant que j'ai fait des recherches [Index]
devrait fonctionner comme annotation à string
.
La colonne 'CreatedBy' de la table 'dbo.Items' est d'un type qui n'est pas valide pour une utilisation comme colonne clé dans un index.
Habituellement, vous obtenez cette erreur lorsque vous utilisez un VARCHAR (Max), essayez d'utiliser:
[Column(TypeName = "VARCHAR")]
[StringLength(n)]
[Index]
public string CreatedBy { set; get; }
où n est compris entre 1 et 450.
Si vous utilisez les mappages 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 }));
}
}
}