Wir verkaufen ein Produkt, für das wir Lizenznummern vergeben und das der Kunde jährlich aufrüsten kann. Ich möchte ein License
POCO einrichten, das diese Upgrade-Informationen verfolgt, indem es die Navigationseigenschaften UpgradedTo
und UpgradedFrom
definiert, die es uns ermöglichen würden, die "Kette" verwandter Lizenzen leicht nach oben oder unten zu verschieben. Also im Grunde etwas wie die folgenden:Mehrere selbstreferenzierende Navigationseigenschaften
Ich bin wirklich Schwierigkeiten, wie dies mit EF Annotations und Fluent API zu definieren. Ich denke, dass der selbstreferenzierende Aspekt mich stolpert.
Wir würden auch am anderen Ende der Beziehung zu setzen eine dieser UpgradeTo
/UpgradeFrom
Eigenschaften auf einem give License
und haben EF kümmern sich um die „gegenüber“ Upgrade Eigenschaft gerne in der Lage sein. So etwas wie das Folgende:
// Licenses upgraded 1 > 2 > 3
License lic1 = CreateLicense('1');
License lic2 = CreateLicense('2');
License lic3 = CreateLicense('3');
using (var db = new Model1())
{
// Insert into database
db.Licenses.Add(lic1);
db.Licenses.Add(lic2);
db.Licenses.Add(lic3);
db.SaveChanges();
// Specify UpgradeFrom/UpgradeTo info only on lic2.
lic2.UpgradedFrom = lic1;
lic2.UpgradedTo = lic3;
db.SaveChanges();
// lic1 and lic3 automatically update possible?
Debug.Assert(lic1.UpgradedTo == lic2);
Debug.Assert(lic3.UpgradedFrom == lic2);
}
Dieser Ansatz funktioniert perfekt. Vielen Dank dafür! – John