【问题标题】:Xamarin Setting default Boolean valueXamarin 设置默认布尔值
【发布时间】:2020-05-21 23:39:24
【问题描述】:

我正在使用 sqlite-net-pcl 并向数据库 DTO 添加一个新列,我想将默认值设置为 true,然后一旦我更新了数据,它就会更新为正确的值。但是默认值在 xamarin 中对我不起作用。

还有其他方法吗?

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

这将阻止我进行更新。

   [NotNull, Default(value: true)]

错误默认未知

DTO

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;
            }

【问题讨论】:

  • 使用第一种方法创建类的新实例时,值是否设置为true?
  • 更正它为数据库中的数据设置为true。但我似乎无法在错误的地方添加新数据。
  • 那么如果你创建一个新实例,将其设置为false,然后将其插入到数据库中,具体发生了什么?
  • 我创建了新实例,仅使用 NotNull 将默认值设置为 true 并等于 true。然后开始更新数据的过程,一旦它更新为 false 就会出错
  • 类似 02-05 16:11:12.599 I/Choreographer(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 D/单声道(8302):

标签: xamarin.forms sqlite.net


【解决方案1】:

根据您的描述,您希望在使用 sqlite-net-pcl 并向数据库添加新列时将默认值设置为 true。

您可以通过属性本身来完成,字段默认值不会改变,直到另一个值要设置。请看下面的代码:

 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; }
    }
}

现在你可以看到我设置 Selected 属性的默认值为 True,然后你可以根据需要更新这个值。

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2018-10-14
    • 2013-03-06
    • 2019-11-09
    • 2015-03-28
    • 1970-01-01
    • 2022-01-25
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多