2015-04-20 16 views
10

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 PropertyBaseProperty 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 ...

+1

Potrebbe inserire il codice che sta causando quell'errore? – mr100

+0

Se non si aggiunge alcuna proprietà e si prova semplicemente a creare una nuova migrazione vuota, funziona come previsto? –

+0

@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

risposta

1

C'era anche un campo calcolato del database nella classe Block. Rimozione di quello (così come le proprietà autoreferenziali) mi consente di eseguire una migrazione.

0

ho avuto questo problema, così, ho cercato di cambiare un tipo ComicImage-ComicMediaFile ... non ero attento a cambiare i nomi delle variabili così ho finito con

List<ComicMediaFile> ComicImages; // and after I changed this variable name to ComicMediaFiles... it worked... I don't know why. 
Problemi correlati