Xamarin Настройка логического значения по умолчанию

Я использую sqlite-net-pcl и добавляю новый столбец в DTO базы данных, и я хотел установить для значения по умолчанию значение true, а затем, как только я обновлю данные, оно будет обновлено до правильного значения. Но по умолчанию у меня не работает в xamarin.

есть ли другой способ сделать это?

[NotNull]
        public boolean Istaxable  { get; set; } = true;

Это заблокирует меня от обновления.

   [NotNull, Default(value: true)]

Ошибка по умолчанию неизвестна

ДТО

public class DtoTaxableLink
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [NotNull]
    public bool IsTaxable  { get; set; } = true;
}  

оказание услуг

 await App.LocalDB.InsertTaxableLinksAsync(BuildDbTaxableLinkItem(    public Task<int> InsertTaxableLinksAsync(List<DtoTaxableLink> taxableLinks)
ListResponse.Data));

локальная БД

public Task<int> InsertTaxableLinksAsync(List<DtoTaxableLink> taxableLinks)
{
return database.InsertAllAsync(taxableLinks, true);
}

Помощник

 private static List<DtoTaxableLink> BuildDbTaxableLinkItem(List<TaxablelineLink> taxableLinks)
            {
                List<DtoTaxableLink> dtoTaxableLink= new List<DtoTaxableLink>();
    foreach (var taxink in taxableLinks)
                {
                    DtoTaxableLink dtoTaxableLink= new DtoTaxableLink();
                    dtoTaxableLink.IsTaxable  = taxableLinks.IsTaxable  ;              
                    dtoTaxableLink.Add(dtoTaxableLink);
                }
                return dtoTaxableLink;
            }

person Jefferson    schedule 06.02.2020    source источник
comment
когда вы создаете новый экземпляр класса, используя первый метод, устанавливается ли значение true?   -  person Jason    schedule 06.02.2020
comment
Правильно установлено значение true для данных в базе данных. Но я не могу добавить новые данные там, где они были бы ложными.   -  person Jefferson    schedule 06.02.2020
comment
поэтому, если вы создадите новый экземпляр, установите для него значение false, а затем вставите его в БД, что конкретно произойдет?   -  person Jason    schedule 06.02.2020
comment
Я создаю новый экземпляр, устанавливая значение по умолчанию в значение true, используя только NotNull и равный true. Затем запустите процесс обновления данных, и как только он перейдет к обновлению до ложного, возникнут ошибки.   -  person Jefferson    schedule 06.02.2020
comment
Что-то вроде 02-05 16:11:12.599 Я/Хореограф(8302): Пропущено 1040 кадров! Приложение может выполнять слишком много работы в своем основном потоке. 02-05 16:11:12.658 D/Mono ( 8302): поиск DllImport в: 'e_sqlite3' ('libe_sqlite3.so'). 02-05 16:11:12.658 D/Mono (8302): поиск 'sqlite3_extended_errcode'. 02-05 16:11:13.116 Д/Моно ( 8302):   -  person Jefferson    schedule 06.02.2020
comment
Пожалуйста, опубликуйте соответствующий код. Я не думаю, что эти сообщения имеют к этому какое-то отношение. Вы действительно получаете исключение во время выполнения?   -  person Jason    schedule 06.02.2020
comment
Нет ошибки времени выполнения, только информация об окне вывода   -  person Jefferson    schedule 06.02.2020
comment
Так как же узнать, что есть проблема? И снова, пожалуйста, опубликуйте соответствующий код.   -  person Jason    schedule 06.02.2020
comment
Когда я отлаживаю его, я вижу, обрабатываются ли данные до тех пор, пока не потребуются обновленные данные.   -  person Jefferson    schedule 06.02.2020


Ответы (1)


Согласно вашему описанию, вы хотите установить для значения по умолчанию значение true при использовании sqlite-net-pcl и добавлении нового столбца в базу данных.

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

 public class User
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string userName { get; set; }
    public string password { get; set; }

    private bool _sel = true;
    [NotNull]
    public bool Selected
    {
        get { return _sel; }
        set { _sel = value; }
    }
}

Теперь вы можете видеть, что я установил для выбранного свойства по умолчанию значение True, после чего вы можете обновить это значение по своему усмотрению.

person Cherry Bu - MSFT    schedule 06.02.2020