Pagine

venerdì 8 agosto 2014

Aggiornamento a Entity Framework 6.1.1

Per un progetto che aveva E.F. 6.0.1, ho avuto la brillante idea di aggiornarlo, tramite nuget, all’ultima versione del noto ORM.

E… ovviamente non ha funzionato al primo colpo… Soprattutto in add-migration mi dava l’errore “Sequence contains more than one matching element”.

 

Purtroppo tale errore non indica esattamente cosa succede e quale sia il problema. Su internet ci sono diversi che si scontrano con tale messaggio, ma nei modi più strani. Per mia fortuna, ho la bella abitudine di dividere il DAL dal resto del progetto, quindi ho effettuato l’unload di tutti i progetti lasciando solo il progetto DAL attivo.

Ovviamente il problema permaneva, ho quindi iniziato ad escludere le varie classi e, continuando a dare il comando di add-migration fino a quando l’errore di Sequence scompariva. Alla fine, il problema, non so per quale motivo, era che in una classe avevo il seguente codice :

public int IdA { get; set; }
[ForeignKey("IdA ")]


public virtual OggettoLink LinkA { get; set; }

public int IdB { get; set; }
[ForeignKey("IdB ")]
public virtual OggettoLink LinkB { get; set; }

public Nullable<int> IdC{ get; set; }
[ForeignKey("IdC")]
public OggettoLink LinkC { get; set; }

Ho commentato la foreignkey lasciando solo i 3 id, fatto un add-migration, poi update-database, infine riaggiunti i tre collegamenti con relativi foreignkey, rifatto add-migration (stavolta funzionava) e infine update-database.

Se trovate questo errore, magari facendo un add-migration come a me, sappiate che potrebbe essere collegamenti differenti allo stesso oggetto, che molto probabilmente, ha necessità di ricreare le foreign key.

Tag di Technorati: ,,