Migration Entity Framework 7: comment obtenir une colonne varchar de longueur supérieure à 1?

code-first-migrations entity-framework-core maxlength sql-server varchar

Question

J'ai le suivant:

[Table("Countries")]
public class Country
{
    public int CountryId { get; set; }

    [MaxLength(255), Required]
    public string CountryName { get; set; }

    [Column(TypeName = "varchar")]
    public string CountryCode { get; set; }
}

Chaque fois que j'applique ma migration, CountryCode devient une colonne varchar avec une longueur maximale de 1. J'ai essayé de définir l'annotation MaxLength sur 255 tout en obtenant une longueur maximale de 1. Lorsque la colonne est définie sur nvarchar, elle fonctionne comme prévu. Est-ce que je fais quelque chose de mal?

Edit: Chaque fois que je définis explicitement le type de données chaîne, la longueur est définie sur 1. J'aurais pu utiliser Column (TypeName = "nvarchar")] et la longueur définie sur 1 ..

Réponse acceptée

Aurais bien aimé utiliser des annotations de données, mais j'ai pu le faire fonctionner avec:

 builder.Entity<Country>()
            .Property(e = e.CountryCode).HasSqlServerColumnType("VARCHAR(30)");

Les annotations de données ne sont pas encore complètement implémentées dans Entity Framework 7. Vous pouvez toujours ajouter des annotations à vos classes d'entité afin qu'elles soient utilisées par d'autres infrastructures (telles que ASP.NET MVC), mais Entity Framework ne traitera pas ces annotations. Vous pouvez suivre le support des annotations de données sur GitHub .

http://ef.readthedocs.org/en/latest/modeling/configuring.html




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi