Каков рекомендуемый способ хранения и извлечения объектов, которые наследуют свойства от других объектов в Neo4j?
Модели выглядят следующим образом:
public class Base
{
public string BaseProperty { get; set; }
}
public class DerivedA : Base
{
public string DerivedAProperty{ get; set; }
}
public class DerivedB : Base
{
public string DerivedBProperty{ get; set; }
}
У нас есть много производных моделей.Нашим первым решением было создание транзакции для каждого производного типа, которая также включает свойства из базы.Проблема: всякий раз, когда изменяется Base, мы должны будем изменить все транзакции для всех производных типов.
Следующим решением было написать отдельную транзакцию для Base, которая сначала сохранит свои свойства в neo4j.И затем после определения, какой производный тип, создается другая транзакция, которая сохраняет остальные свойства из производного типа.Таким образом, номер транзакции удваивается, но мы имеем четкое разделение, которое облегчает внесение изменений.
Извлечение еще сложнее.Если мы хотим получить все типы DerivedA, которые хранятся в Neo4j, у нас сначала есть транзакция, которая извлекает базовые свойства.Затем мы определяем производный тип и проводим новую транзакцию, которая извлекает свойства из производного типа.Теперь нам нужно правильно смешать результаты обеих транзакций, чтобы получить полный список производных A со всеми свойствами внутри.
Есть ли более простой / лучший способ?