MongoDb Insert устанавливает для моего логического значения значение False - PullRequest
0 голосов
/ 01 октября 2018

В моем приложении, полученном из событий, у меня есть модель хранилища, похожая на следующую:

    public Guid WarehouseId { get; set; }
    public string WarehouseName { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Address { get; set; }
    public int ZipCode { get; set; }
    public string Country { get; set; }
    public string PhoneNumber { get; set; }
    public DateTime ModifiedDate { get; set; }
    public double TotalSpace { get; set; }
    public double? UsedSpace { get; set; }
    public bool TemporaryWarehouse { get; set; }  //FLAG IN QUESTION! 
    public int? TotalBoxesAtLocation { get; set; }
    public int? UniqueBoxesAtLocation { get; set; }
    public int EventVersion { get; set; }
    public int EventsRun { get; set; }
    [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)] // TODO: what is the best mongo dict representation for these?
    public Dictionary<string, int> Locations { get; set; } // tracks warehouse locations and asset count at each location key=loc value=count
    [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
    public Dictionary<int, List<string>> BoxTypeMap { get; set; } // boxTypeNum, list<location> - Can have duplicate locations indicating higher quantity at that location
    [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
    public Dictionary<Guid, string> BoxMap { get; set; } // maps individual boxGuid to current location

Когда склад создается, его можно создать как временный склад, установив для поля временного хранилища значение true.

В рамках этого приложения, получающего события, можно перестроить базы данных на стороне чтения, воспроизведя события.Когда я это делаю, события, созданные на складе, обрабатываются синхронно, а склады воссоздаются.

Проблема здесь в том, что даже если данные события включают в себя необходимый флаг, чтобы установить хранилище как временное (см. Ниже), и даже если эти данные правильно сериализованы в вышеуказанную модель (с флагом TemporaryWarehouse, являющимсяустанавливается во всех случаях), после вставки в базу данных моего документа, поле всегда ложно .

Что здесь происходит?

Вот мой метод вставки хранилища:

    public void InsertWarehouseState(WarehouseState s)
    {
        _context.WarehouseState.InsertOne(s);
    }

На рисунке ниже вы можете видеть флаг временного хранилища, установленный в true изнутри этого метода, который выполняется только во время перестроения.После завершения этой вставки значение будет ложным при просмотре из средства просмотра документов Монго.

enter image description here

Еще один момент, на который следует обратить внимание, это то, что за пределами воспроизведения / перестроения состояние хранилища может быть сохранено как временное без проблем.Это только проблема при перестройке.

...