>>> a = range(10)
>>> [val for val in a for _ in (0, 1)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
N.B. _
традиционно используется в качестве имени переменной-заполнителя, когда вы не хотите ничего делать с содержимым переменной. В этом случае он просто используется для генерации двух значений каждый раз во внешнем цикле.
Чтобы превратить это из списка в генератор, замените квадратные скобки круглыми скобками.
После некоторого дополнительного исследования я нашел ответы. Ответы, потому что есть много вещей, которые могут предотвратить ленивую загрузку в NHibernate.
Запрос против сеанса.Загрузка: При получении элемента через session.Load ()
вы получаете прокси. Но как только вы обращаетесь к любому свойству , скажем, к URL
, извлекается объект, включая все его ассоциации, которые не поддерживают отложенную загрузку.
ссылка на свойство: Ленивая загрузка работает только с идентификатором объекта. Когда ассоциация свойств разрешается через другой столбец в целевой сущности, NH охотно ее извлекает. Не то чтобы это было бы возможно, это просто не реализовано: Ошибка
not-found = "ignore" позволяет недопустимым внешним ключам, то есть если указанный объект не является t found NH инициализирует свойство нулевым значением. NH не перехватывает доступ к свойствам для отложенной загрузки, а вместо этого назначает прокси объекта. С not-found = "ignore"
он не может решить, должно ли свойство быть установлено равным null или прокси для данного, возможно, недействительного внешнего ключа. Эту проблему, возможно, можно решить путем перехвата доступа к свойству.
При отключении not-found = "ignore"
и ссылка на свойство
экспорт схемы генерирует ограничения, которые обеспечивают циркулярная ссылка. Не хорошо! Тогда правильным отображением будет ограниченное однозначное отношение, где ключ для HippoAccountSync
должен иметь генератор внешний
.
Если повторяющиеся элементы не значимы в массивах, вы можете использовать операцию minusSet:
для NSMutableSet
:
NSMutableArray *firstArray = [NSMutableArray arrayWithObjects:@"Bill", @"Ben", @"Chris", @"Melissa", nil];
NSMutableArray *secondArray = [NSMutableArray arrayWithObjects:@"Bill", @"Paul", nil];
NSSet *firstSet = [NSSet setWithArray:firstArray];
NSMutableSet *secondSet = [NSMutableSet setWithCapacity:[secondArray count]];
[secondSet addObjectsFromArray:secondArray];
[secondSet minusSet:firstSet]; // result is in `secondSet`