шаблон хранилища nhibernate - PullRequest
0 голосов
/ 21 марта 2011

У меня есть очень простой вопрос с nhibernate и шаблоном репозитория:

У меня есть репозиторий (агрегат), и это родитель.Если я хочу удалить дочерний элемент, должен ли я иметь один метод удаления, который обрабатывает удаление как дочернего, так и родительского элемента, или я должен иметь разные методы?

Как мне справиться с удалением родителя, у которого есть ребенок.Любой пример кода будет оценен.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Используете ли вы файлы сопоставления hbm или Fluent NHibernate для настройки сопоставлений?

Если вы используете файлы сопоставления, одним из вариантов будет установка атрибута каскада, например:

...
<bag name="Children" lazy="true" cascade="delete" >
    <key column="ParentId" />
    <one-to-many class="Child" />
</bag>
...

cascade = "delete" приведет к удалению родительского объекта, каскадного к связанным объектам.Каскад может быть указан как cascade = "all | none | save-update | delete", так что вы можете указать, какие операции следует каскадировать от родителя к связанным объектам.

0 голосов
/ 13 декабря 2011

Примечание .Cascade.All():

HasMany(item => item.ItemFeedbackItems)
            .KeyColumn("ItemID")
            .Cascade.All()
            .LazyLoad()
            .Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...