Ich erstellte ein Modell mit 3 Klassen mithilfe von Tabelle-pro-Hierarchie-Vererbung und mit 2 Fremdschlüssel, die sich selbst auf die Hierarchietabelle verweisen.Migrationsergebnisse in "Sequenz enthält keine Elemente" Fehler
Ich habe eine BaseProperty
Klasse mit einem selbst Clone
Schlüssel CloneID
und Navigationseigenschaft Referenzierung:
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;}
}
Ich habe eine Klasse, die Property
BaseProperty
und hat einen Fremdschlüssel BlockID
und eine Block
Navigationseigenschaft erbt.
public class Property : BaseProperty
{
public int? BlockID { get; set; }
public Block { get; set; }
}
Ich habe eine Block
Klasse, die BaseProperty
und hat eine Properties
Navigationseigenschaft erbt:
public class Block: BaseProperty
{
public ICollection<Property> Properties { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? ComputedNumberOfProperties { get; set; }
}
Beachten Sie, dass die Block
Eigenschaft in der Property
Klasse, weil beide Property
und Block
vererben BaseProperty
auch Referenzierung selbst ist und Ich verwende Tabellen-für-Hierarchie-Vererbung.
Es hat funktioniert und ist in einem Produktionssystem mit Live-Daten. Jetzt möchte ich ein Feld hinzufügen (nur eine Standard-int?
-Eigenschaft), um die Basisklasse und ich bekomme eine "Sequenz enthält keine Elemente" Fehler, wenn ich eine Migration hinzufügen.
Ich fand das offene Problem bei https://entityframework.codeplex.com/workitem/569, also Ich habe versucht, die beschriebene Problemumgehung und entfernte die selbstreferentiellen Schlüssel und Navigationseigenschaften, aber diese Migration fehlgeschlagen mit dem gleichen Fehler. Jetzt scheint ich komplett aufgespießt zu sein ...
könnten Sie Code schreiben, dass verursacht diesen Fehler? – mr100
Wenn Sie überhaupt keine Eigenschaften hinzufügen und nur versuchen, eine neue leere Migration zu erstellen, funktioniert das wie erwartet? –
@ChrisCurtis ja Migrationen funktionieren normal für Änderungen in anderen Klassen. Nach vielen Versuchen habe ich es tatsächlich geschafft, es zum Laufen zu bringen. Es gab auch ein Datenbank-berechnetes Feld in der Klasse "Block". Durch das Entfernen dieser Eigenschaften (sowie der Eigenreferenzeigenschaften) kann ich Migrationen ausführen. Ich beabsichtige, ein wenig mit dem Problem zu experimentieren, um Code bereitzustellen, der das Problem nachbildet. Dann werde ich es hier posten – Colin