У меня возникла проблема, когда вы возвращаетесь к mongo db с помощью официального драйвера С#.
public abstract class AggregateRoot
{
/// <summary>
/// All mongoDb documents must have an id, we specify it here
/// </summary>
protected AggregateRoot()
{
Id = ObjectId.GenerateNewId();
}
[BsonId]
public ObjectId Id { get; set; }
}
У моих сущностей уже есть идентификаторы, но мне нужно было создать идентификатор mongo для его работы, так как все документы в коллекции должны иметь один. Теперь я получаю новую сущность в своей системе, генерируется новый Mongo Id, и я могу заставить mongo не изменять _id исключения из старого документа. Есть ли какая-нибудь работа?
Позвольте мне немного описать дизайн. Все объекты, которые будут хранятся как документы, наследуемые от AggregateRoot, которые имели id в нем. Каждый поддокумент имел свой идентификатор автоматически, и у меня не было проблем с этим. Идентификатор в AggregateRoot был введен для устранения проблемы при получении данных из MongoCollection to List и генерация была введена так, что id-s разные. Теперь мы можем переместить это поколение id для сохранения методов потому что новый объект для обновления имел новое поколение идентификаторов. Но это будет означать, что каждый разработчик в команде не должен забывать генерировать id-s в хранилище, которое является рискованным. Было бы лучше просто игнорировать идентификатор чем отображение из монго, если это возможно, и не иметь Класс AggregateRoot вообще