【问题标题】:How can I set [NotNull, Default(value: 0)] for a class used to create a SQLITE table in Xamarin如何为用于在 Xamarin 中创建 SQLITE 表的类设置 [NotNull, Default(value: 0)]
【发布时间】:2018-09-18 09:42:33
【问题描述】:

我正在尝试在用于在 SQLITE 中定义表的类中设置默认值,如下所示:

using System;
using SQLite;

namespace Japanese {

public class Phrase
{

    [PrimaryKey, NotNull]
    public string PhraseId { get; set; }
    public int PhraseNum { get; set; }
    public int CategoryId { get; set; }
    [NotNull]
    public bool Selected { get; set; } 
    [NotNull, Default(value: 0)]
    public bool Viewed   { get; set; }
}
}

我收到一条错误消息:

/Phrase.cs(19,19):错误 CS0246:类型或命名空间名称 找不到“DefaultAttribute”(您是否缺少使用 指令还是程序集引用?)(CS0246)

有谁知道我该如何解决这个问题?

【问题讨论】:

  • 尝试在您的代码中包含using System.ComponentModel; using System.ComponentModel.DataAnnotations;
  • 您使用的是哪个版本的 SQLite.Net-PCL?

标签: c# sqlite xamarin xamarin.forms


【解决方案1】:

bool 始终初始化为 false,因为您将 Viewed 设置为 0,这意味着在 SQLite 中为 false。但是,如果您需要初始化其他一些字段,您可以通过属性本身来完成,字段默认值不会更改,直到设置另一个值。

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

可能你想要PhraseId AutoIncreament 而不是NotNull,因为PrimarKey 总是在其中NotNull 约束。

【讨论】:

  • 主键上的自动增量将不起作用,因为它被定义为字符串。它应该在构造函数中初始化为 guid/uuid。
猜你喜欢
  • 2014-11-22
  • 2018-12-30
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多