У меня есть нечто, похожее на следующую структуру документа:
public class Document {
public int Id { get; set; }
public string Name { get; set; }
public List<Property> Properties { get; set; }
}
public class Property {
public int Id { get; set; }
public string Name { get; set; }
}
Теперь запрашивать и изменять документы легко.Но мне нужно получить доступ к конкретным экземплярам Property в моем приложении, и кажется, что они не получат автоматически идентификатор, как корневой документ.И, похоже, это сделано в RavenDB.
Возможно, я застрял в реляционном мире, но я хотел бы в основном получить правильный документ, затем получить правильное свойство, изменить его исохраните документ снова.
from property in document.Properties
where property.Id == someId
select property
... который, очевидно, не будет работать, пока
- RavenDB не устанавливает поле Id автоматически или
- Я сам не создаю механизм генерации идентификаторов
Я иду по неверному пути, или я пытаюсь понять, что я пытаюсь сделать?Должен ли я переместить свойства в корневой узел и сделать ссылку на них в документе?Или я должен просто сделать что-то подобное при вставке свойств:
- Получить документ со списком свойств
- Получить свойства [последний] ID
- Добавить1 и введите новый идентификатор самостоятельно в новых свойствах
?
Однако для этого потребуется по крайней мере два запроса (один для получения существующих свойств, другой для сохранения изменений) к базе данных, что кажется грязным и ненужным для такой, казалось бы, простой задачи.
Я нашел много подобных сообщений, но ни один из них не отвечает на этот AFAIK.