SQLite.Net,C#相当于SQLite位数据类型

SQLite.Net,C#相当于SQLite位数据类型,c#,sqlite,windows-runtime,winrt-xaml,sqlite.net,C#,Sqlite,Windows Runtime,Winrt Xaml,Sqlite.net,我用c语言声明下面的类# 我调用此方法在SQLite数据库中创建等效表 public async Task CreateTable() { SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path); await conn.CreateTableAsync<Employee>(); } 我想创建一个a列,它有点 [IsActive] [bit] 为了这个我试过了 public bool IsActive {

我用c语言声明下面的类#

我调用此方法在SQLite数据库中创建等效表

public async Task CreateTable()
{
   SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
   await conn.CreateTableAsync<Employee>();
}
我想创建一个a列,它有点

[IsActive] [bit]
为了这个我试过了

public bool IsActive { get; set; } 

这两个属性都会生成一个整数列

[IsActive] integer
那么,我应该如何声明IsActive属性以获取一个位为数据类型的列呢

如果我声明属性并将其指定为NOTNULL,我还有一个问题

[NotNull]
public bool Address{ get; set; }
然后,当我调用CreateTable()时,它给出了一个错误,表示“没有为NOTNULL属性指定默认值”

我试图在构造函数中初始化此属性,但它不起作用

我如何处理这些问题?
请帮助

据我所知,在SQLite文档中,SQLite没有位数据类型

在SQLite.Net中,所有类型的byte/boolean/int都映射到integer:参见

对于NotNull错误,让我猜猜:

  • 您的表中已经有一些条目
  • 现在添加一个具有NotNull属性的新列
  • SQLite试图更改平板电脑,但它崩溃了,因为新列中的多个条目现在具有空值
我认为这是唯一需要按此顺序更改表的情况:

  • 添加不带NotNull的列
  • 添加一些列值
  • 只有当所有表项都具有此列-->的值时,才可以添加NotNull属性
如果您的表是空的,那么NotNull参数从一开始就可以正常工作


编辑更简单的解决方案:

  • 添加不带NotNull的列
ALTER TABLE Employee ADD列为活动整数默认值0;
  • 现在可以添加NotNull属性并再次调用CreateTable
[NotNull]
公共bool地址{get;set;}
等待连接CreateTableAsync();

因此finl的答案是“不,那是不可能的”。为你在这方面的研究干杯。和+1用于解释不为空。谢谢。关于你的最后一点,在我填写所有列的值之后,如何添加NotNull属性???简言之,我将如何以编程方式向属性添加NotNull属性?那么您已经添加了列并填充了值?那么,您可以很容易地将NotNull属性添加到列中,然后再次调用CreateTableAsync,这一次它应该可以正常工作,而不会出错。但是如何通过编程将NotNull属性添加到已经存在的属性???类似于“IsActive.Attributes.Add('NotNull')”??或者您希望我将另一个类似的类的NotNull属性设置为IsActive属性,并为此新类调用CreateTable()方法(&C))??
public Boolean IsActive { get; set; }
[IsActive] integer
[NotNull]
public bool Address{ get; set; }