2010-09-16 2 views
0

Я пытаюсь перенести большой граф объектов .NET для использования NHibernate, но я сталкиваюсь с проблемой, что большинство отношений определяются только однонаправленно - в большинстве случаев дочерний класс содержит ссылку на родителя, но родительский элемент не содержит коллекцию ссылок на его дочерние элементы. Было бы неплохо добавить все коллекции, чтобы превратить отношения в двунаправленные, поэтому мне интересно, какие последствия для NHibernate не будут делать?Когда я могу использовать однонаправленные отношения в NHibernate?

Одним из следствий, которые я заметил, является то, что каскадные удаления, похоже, терпят неудачу (дочерний элемент не удаляется в БД, что вызывает нарушение ссылочной целостности). Это единственное следствие или есть другие проблемы, о которых я должен знать?

Существуют ли какие-либо рекомендации относительно того, когда отношения должны быть унифицированными или двунаправленными?

Благодаря

ответ

1

Я думаю, что не в состоянии каскада удалений будет единственной проблемой с NHibernate самого по себе.

Но вы не сможете легко просмотреть график. Вы можете сделать это от ребенка к родительскому, но, очевидно, не от родителя к ребенку. Таким образом, вы должны будете выдать запрос каждый раз, когда хотите, чтобы все дочерние элементы были родителями.

Таким образом, если вы используете NH для сохраняющейся модели домена, где у вас есть корневой объект, из которого вам нужно использовать дочерние объекты для определенных операций, вам нужно будет выдать запросы из модели, чтобы получить детей. Таким образом, ваша модель будет связана с вашим доступом к данным.

Или вам нужно передать дочерние элементы родительскому объекту в виде коллекций, но тогда легко будет иметь коллекции на модели, чтобы начать ширину, чтобы NH мог заполнить их для вас.

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