Я знаю, как отобразить двунаправленные отношения с NHibernate, но знает ли кто-нибудь эффективный способ сделать их «безопасными для разработчика».
Что я имею в виду, это то, что как только один конецсвязь установлена, другой конец также должен быть установлен, например:
[Test]
public void TestBidirectionalRelationships_WhenAddingOptionToProduct()
{
var product = new Product();
var productOption = new ProductOption();
product.AddOption(productOption);
Assert.That(product.Options.Contains(productOption));
Assert.That(productOption.Product, Is.EqualTo(product);
}
[Test]
public void TestBidirectionalRelationships_WhenSettingProductOnOption()
{
/* Alternatively, productOption.Product would have no public setter */
var product = new Product();
var productOption = new ProductOption();
productOption.Product = product;
Assert.That(product.Options.Contains(productOption));
Assert.That(productOption.Product, Is.EqualTo(product);
}
Как этого добиться, не делая код ужасно сложным, и в то же время поддерживая NHibernate?