Skip to content

Интерфейс UnityEF.ICollection используется для отметки класса, который реализует коллекцию и связь один ко многим при объектно-реляционном маппинге. Они перечислены в таблице:

Коллекция Описание
GDictionary Глобальный словарь. V должен быть классом.
LDictionary Локальный словарь. V должен быть классом.
LDictionary_ Локальный словарь для простых типов.
GList
LList Локальный список. T должен быть классом.
LList_ Локальный список для простых типов.
LQueue Локальная очередь. T должен быть классом.
LQueue_ Локальная очередь для простых типов.

Все эти классы поддерживают некоторое общие поведение: * При отсутствии модели, реализуют хранение в памяти, соответствующими стандартными реализациями (Dictionary, List, Queue) * __

Разделение на глобальные и локальные коллекции (списки)

  • Глобальный список/словарь отображается на всю таблицу в базе данных (БД). Содержит все записи класса (сущности) V из соответствующей таблицы без привязки к какому-либо родительскому объекту.
  • Такие коллекции типичны для корневых агрегатов (например, Society может содержать глобальные списки всех агентов, всех зданий и т.д.).
  • Если в иерархии наследования есть базовый класс (например, Building) и наследники (Residential, Company), глобальный словарь может быть построен для базового класса и будет включать все записи всех наследников (полиморфная выборка). В то же время можно создать отдельные глобальные словари для каждого конкретного типа наследника — тогда каждый из них будет содержать только записи соответствующего подтипа (и его наследников по нисходящей).
  • Глобальные словари не представленны в БД отдельными таблицами - это таблица сущностей (определенного класса, с точностью до полиморфизма), она не имеет внешнего ключа к агрегирующей сущности. Но с точки зрения ООП - это такой же агрегированный словарь, как и локальный.

  • Локальный список содержит произвольное подмножество, выборку записей, которое принадлежит конкретному экземпляру (объекту класса).

  • Такие коллекции всегда являются частью агрегата и не могут существовать отдельно от родителя (например, у заказа есть локальный словарь параметров, содержащий только параметры этого заказа).
  • В реляционной модели локальные коллекции реализуются через отношение «один‑ко‑многим»: каждая дочерняя запись содержит внешний ключ на родителя. Поэтому при сохранении локального словаря необходимо обеспечивать корректную привязку дочерних элементов к родителю.