2016-07-20 1 views
2

J'ai eu un champ avec des attributs suivants:Changement de StringLength attribut non inclus dans le code première migration

[Column("Name")] 
[StringLength(50)] 
public string Name { get; set; } 

La migration pour ce champ ressemblait à ceci:

CreateTable(
"dbo.TEST", 
c => new 
{ 
    Id = c.Int(nullable: false), 
    Name = c.String(maxLength: 50), 
}) 
.PrimaryKey(t => t.Id) 
.Index(t => t.Id 
); 

Puis j'ai changé le champ comme ceci:

[Column("Test_Name")] 
[StringLength(255)] 
public string TestName { get; set; } 

et exécuté Add-Migration, mais le changement StringLength n'a pas été inclus, il est encore NVARCHAR2(50) dans mon Oracle DB et la nouvelle migration ressemble à ceci:

RenameColumn(table: "dbo.TEST", name: "Name", newName: "Test_Name"); 

Est-ce un problème commun?

Que dois-je faire pour que la longueur soit également modifiée dans la base de données?

+0

Vous devrez peut-être pirater le code Up(): http://stackoverflow.com/questions/28299080/how-to-change-size-of-existing-column-using-entity-framework-6-code- premier –

Répondre

0

Combien de migrations avez-vous déjà? Nous avons commencé à rencontrer des bogues dans la création de scripts de migration après avoir accumulé ~ 20 migrations. Si vous avez plus de 10 migrations, essayez consolidate them. Quand j'ai fait la consolidation, la génération de scripts de migration a commencé à fonctionner correctement.

+0

Merci. Bon à savoir mais je n'ai que 5 jusqu'ici. – Palmi

+0

Faites un essai en supprimant toutes vos migrations et créez un champ vert inital pour voir si c'est à cause du bug dans EF. –