Вы определяете шаблон данных, содержащий дочернее представление для модели дочернего представления.
Редактировать: навигация просмотра модели сначала хороша в контексте mvvm. Фактически, можно утверждать, что локатор модели представления может быть плохим стилем ... но он настолько удобен и настолько широко используется сегодня, что это не имеет значения.
Общий идиом в Obj-C должен иметь конкретные имена для обратных вызовов для определенных событий. (Например, parserDidBeginDocument:
от NSXMLParserDelegate
). Если действительно нужно уметь указывать имена, вполне вероятно, что единственным решением будет добавление имен селекторов как @ «mySelector: wityArgument: context:»
или somesuch.
Наиболее простой реализацией является структура списка смежности :
id parent_id data
Однако некоторые базы данных, в частности MySQL
, имеют некоторые проблемы в работе с этой моделью, потому что она требует возможности выполнения рекурсивных запросов, которых MySQL
не хватает.
Другая модель - это вложенные наборы :
id lft rgt data
, где lft
и rgt
- произвольные значения, определяющие иерархию (любой дочерний lft
, rgt
должен находиться в пределах любого родительского lft
, rgt
)
Однако в MySQL
это может быть улучшено с помощью abitilies SPATIAL
.
См. следующие статьи в моем блоге:
для получения более подробных объяснений.
-121--1208763-ligget78 дал мне другую идею, как сделать обновление одного столбца:
Создайте новый DataContext только для этого вида обновления и включите только необходимые столбцы в этот DataContext.
Таким образом ненужные столбцы даже не будут загружены и, конечно, не будут отправлены обратно в базу данных.
Необходимо установить UpdateCheck на всех свойствах класса Статьи кроме первичного ключа (нажмите на свойство класса в разработчике LINQ2SQL и переключитесь на Окно инструментов Свойств) к Никогда (не уверенный в WhenChanged, возможно, который работает также - идут вперед и экспериментируют с ним!).
Это вынудит LINQ2SQL использовать
UPDATE ... SET ... WHERE ID = @2
вместо долгой версии со всеми столбцами в операторе Where:
UPDATE ... SET ... WHERE ID = @2 AND ItemsInStock = @1 AND SomeOtherColumn = @3 AND...
Теперь можно использовать код как
context.Articles.Attach(article /* article with updated values */, new Article { ID = articleID, ItemsInStock = -1 } /* pretend that this is the original article */);
context.SubmitChanges();
В основном Вы указываете, что только свойство ItemsInStock изменилось - другие опоры должны иметь то же значение по умолчанию, articleID, конечно, являющийся тем же.
Примечание: Вы не должны выбирать статью до этого.