Я пытался перенести небольшой побочный проект на использование Mongo, поскольку использование Nhibernate для текущего сценария занимало все больше и больше времени.
Изначально я попробовал NoRM, и в нем была ветка, которая поддерживала циклические ссылки и работала нормально, однако я не могу найти никакой документации, указывающей, поддерживает ли ее официальный драйвер c #.
Ситуация и почему у меня есть циклическая ссылка, потому что у меня есть объект местоположения, который содержит список дорог, каждая дорога имеет ссылку на другое местоположение. Это очень похоже на простой набор узлов в поисковике.
public class Location
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Road> Roads { get; set; }
}
public class Road
{
public Location From { get; set; }
public Location To { get; set; }
}
Теперь проблема в том, что у меня есть целый мир, построенный из этих объектов (у них больше свойств в реальном сценарии), и все они связаны друг с другом, однако, не имея возможности обрабатывать циклические ссылки, я не уверен, как я могу решить эту проблему проблема, поскольку каждая дорога должна знать начало и конечную точку.
Я знаю, что один из компромиссов состоит в том, чтобы просто избавиться от объекта местоположения, и вместо этого иметь Id, который ссылается на местоположение, но тогда мне нужно запросить каждое подразделение в отдельности. Это делается только один раз, а затем сохраняется в памяти, поскольку существует огромная карта, которая содержит все возможные местоположения и все возможные маршруты, чтобы можно было найти быстрые пути между точками.
Это может быть случай, когда Местоположение и Дороги не подходят для хранения документов и могут храниться другим способом ...