0
我們銷售的產品爲其頒發許可證編號,並且客戶可以每年進行升級。我想設置一個License
POCO,通過定義UpgradedTo
和UpgradedFrom
導航屬性來跟蹤此升級信息,這將允許我們輕鬆地上下移動相關許可證的「鏈」。所以基本上是這樣的:多個自引用導航屬性
public class License
{
[Key]
public string LicenseNum { get; set; }
// Other properties relating to license omitted...
// Optional relationship.
public License UpgradedTo { get; set; }
// Optional relationship.
public License UpgradedFrom { get; set; }
}
我真的很掙扎如何定義這與EF批註和Fluent API。我認爲自我參照方面是讓我絆倒的東西。
我們也希望能夠設置在任一給License
這些UpgradeTo
/UpgradeFrom
特性之一,有EF在關係的另一端走「相反的」升級屬性的照顧。所以像下面這樣:
// 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);
}
這種方法完美的作品。非常感謝! – John