Ho creato un modello con 3 classi utilizzando l'ereditarietà della tabella per gerarchia e con 2 chiavi esterne che fanno riferimento alla tabella gerarchica.Risultato della migrazione nell'errore "La sequenza non contiene elementi"
ho una classe di BaseProperty
con un auto riferimento chiave CloneID
e navigazione immobili Clone
:
public class BaseProperty
{
public int ID {get; set; }
public int? CloneID {get; set; }
public BaseProperty Clone {get; set; }
//If I add this code, when I use Add-Migration -
//Sequence contains no elements error
//public int? TriggeredCloneID {get; set;}
}
ho una classe che eredita Property
BaseProperty
e ha una chiave esterna BlockID
e una proprietà Block
navigazione.
public class Property : BaseProperty
{
public int? BlockID { get; set; }
public Block { get; set; }
}
ho una classe Block
che eredita BaseProperty
e ha una proprietà Properties
navigazione:
public class Block: BaseProperty
{
public ICollection<Property> Properties { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? ComputedNumberOfProperties { get; set; }
}
notare che la struttura Block
nella classe Property
è anche auto riferimento, perché sia Property
e Block
Eredita BaseProperty
e Sto usando l'ereditarietà della tabella per gerarchia.
Ha funzionato ed è in un sistema di produzione con dati in tempo reale. Ora voglio aggiungere un campo (solo una proprietà standard int?
) alla classe base e ottengo un errore "Sequenza non contiene elementi" quando aggiungo una migrazione.
Ho trovato il problema aperto a https://entityframework.codeplex.com/workitem/569, quindi Ho provato la soluzione descritta e rimosso le chiavi autoreferenziali e le proprietà di navigazione, ma quella migrazione non è riuscita con lo stesso errore. Ora mi sembra di essere completamente trafitto ...
Potrebbe inserire il codice che sta causando quell'errore? – mr100
Se non si aggiunge alcuna proprietà e si prova semplicemente a creare una nuova migrazione vuota, funziona come previsto? –
@ChrisCurtis yes le migrazioni funzionano normalmente per le modifiche in altre classi. Dopo molte prove ed errori, sono riuscito a farlo funzionare. C'era anche un campo calcolato da un database nella classe 'Block'. Rimuovendo ciò (così come le proprietà di auto-referenziamento) permettimi di eseguire le migrazioni. Intendo sperimentare un po 'il problema al fine di fornire un codice che replichi il problema. Poi lo posterò qui – Colin