我在c#
中声明了以下课程[Table("Employee")]
public class Employee
{
[PrimaryKey,AutoIncrement]
public int EmployeeId { get; set; }
public DateTime DateOfJoining { get; set; }
public string Address{ get; set; }
}
我调用此方法在我的SQLite数据库中创建等效表
public async Task CreateTable()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(path);
await conn.CreateTableAsync<Employee>();
}
因此它在SQLite中创建了一个表,如下所示
[EmployeeId] int,
[DateOfJoining] [datetime],
[CallType] [varchar]
我想要创建一个列,它是位
[IsActive] [bit]
为此,我尝试了
public bool IsActive { get; set; }
和
public Boolean IsActive { get; set; }
这两个属性都会产生一个整数
的列[IsActive] integer
那么我应该如何声明我的IsActive属性来获取一个bit为数据类型的列。
我还有一个问题,如果我声明属性并将其指定为非null
[NotNull]
public bool Address{ get; set; }
然后当我调用CreateTable()说“没有为Not Null属性指定默认值”时,它给出了一个错误。
我尝试在构造函数中初始化此属性,但它没有用。
如何处理这些问题? 请帮忙
答案 0 :(得分:2)
到目前为止,我在SQLite Docs中看到SQLite没有位数据类型
在SQLite.Net中,所有类型的byte / boolean / ints都映射到整数:请参阅this line
对于NotNull错误,我猜:
我认为这是唯一需要按此顺序更改表格的情况:
如果您的表为空,则NotNull参数从一开始就可以正常工作。
编辑更简单的解决方案:
ALTER TABLE Employee ADD COLUMN IsActive integer default 0;
[NotNull]
public bool Address{ get; set; }
await conn.CreateTableAsync<Employee>();