Пустой указатель по сравнению со значением не набор

Я нашел решение для тебя. Вы можете использовать это

Используйте mongoexport для экспорта данных:

mongoexport --db test --collection traffic --out traffic.json

выполните команду в командной оболочке mongo

, если проблема не устранена, обратитесь к этот официальный материал

5
задан mac 12 December 2011 в 08:10
поделиться

4 ответа

Using a class for each property value would be more scalable that having to declare a bool for each property. It would also enable you to chose which properties are able to be left empty and/or set to null.

3
ответ дан 14 December 2019 в 08:59
поделиться

Вы можете написать класс, который обертывает флаги данными:

public class DtoData<T> 
{
  T data;
  bool IsSet { get; private set; }
  T Data 
  { 
    get { return data; }
    set { data = value; IsSet = true; } 
  }
}


public class XyzDto 
{
  // only private setters, initialize in constructor
  DtoData<int?> SomeInt { get; private set; }
  DtoData<string> SomeString { get; private set; }
}

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


Лично я бы попытался избежать этой проблемы. Почему «не определено» действительно должно существовать? Вы рассылаете различия, неполные Dtos или откуда они взялись? Эта проблема может возникнуть с фильтрами, где вам нужна разница, если вы фильтруете поле на нуль или если вы не фильтруете его вообще. Но для таких сценариев

3
ответ дан 14 December 2019 в 08:59
поделиться

Я уже сталкивался с этой проблемой раньше. Вы можете обойти это, введя какое-то значение по умолчанию при построении DTO, но это не идеально. Я написал более подробную информацию здесь , это может помочь кому-то лучше понять проблему.

0
ответ дан 14 December 2019 в 08:59
поделиться

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

1
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: