2011-02-08 4 views
1

Так с S#arp Architecture, если у вас есть (скажем) Dog Объект, который имеет отношения «один ко многим» с Trick Объект, как сохранить синхронизацию коллекции при добавлении объекты и т.д.?S # arp Архитектура: управление отношениями родитель-ребенок

То есть, если есть коллекция Dog.Tricks, и вы хотите добавить новый Trick, что лучше?

В целом подход с NHibernate, по-видимому, заключается в том, чтобы скрыть измененную коллекцию Tricks (которую NHibernate связывает) и показать неизменяемый IEnumberable. См. Этот вопрос для обсуждения техники: Best practice for Handling NHibernate parent-child collections. Это похоже на хороший опрятный способ убедиться, что есть только один способ добавить трюки - с помощью метода dog.AddTrick() - и сохранить коллекции в синхронизации.

Но мне кажется, что из-S # агр использует свободный, такой подход не так легко реализовать (если я не пропустил что-то?)

Так будет эквивалентна лучшей практики для S # АРП?

ответ

2

Это наилучшая практика для хранения ваших коллекций в синхронизации в S #. Посмотрите на Fluent NHibernate для отображения частного поля. Вам нужно будет создать переопределение отображения для вашего объекта Dog. Это переопределение скажет, что доступ к трюкам осуществляется с помощью поля для верблюжей.

http://wiki.fluentnhibernate.org/Mapping_a_collection_that_uses_a_private_backing_field

+0

ОК. И для свойства 'trick.Dog' (указывая от ребенка назад к родительскому) является« защищенный внутренний набор »лучшим способом? (так что он устанавливается только во время метода 'dog.AddTrick()') – codeulike

+0

Если честно, это может пойти в любом случае. Я предпочитаю использовать защищенный внутренний, но сделал это в обоих направлениях в зависимости от сценария. – Alec

Смежные вопросы