如何使用SQLite-net在SQLite中为列设置默认值?

时间:2014-11-12 17:07:43

标签: c# sqlite sqlite-net

我正在向Windows rt导入Android代码,我需要在两个应用上兼容数据。 在创建我的sqlite数据库时,我需要为列设置默认值,执行类似

的操作
CREATE TABLE [blabla] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [bleh] INTEGER NOT NULL DEFAULT -1 )

我用这种方式使用SQLite-net编写了我的C#代码:

[Table("blabla")]
public class Blabla {
    [PrimaryKey, AutoIncrement, NotNull]
    public int id { get; set; }

    [NotNull]
    public int bleh { get; set; }
}

但是我无法将默认值设置为'bleh'。我需要两个数据库是相同的= / 任何人都可以帮我这个吗?

谢谢=)

3 个答案:

答案 0 :(得分:3)

你为什么不用:

    private int _bleh = 1;
    [NotNull]
    public int Bleh
    {
        get { return _bleh; }
        set { _bleh = value; }
    }

然后,除非更改

,否则bleh的默认值始终为1

答案 1 :(得分:2)

只要没有得到答案,我只是使用SQL语句创建了整个数据库,因此数据库不需要由我的C#代码创建。它工作正常!

答案 2 :(得分:0)

我知道已经晚了,但这也许会对像我这样的人有所帮助。 如果您的SQLite支持Default,请使用Default属性

[Table("blabla")]
public class Blabla {
    [PrimaryKey, AutoIncrement, NotNull]
    public int id { get; set; }

    [NotNull,Default(value:1)]
    public int bleh { get; set; }
}

如果您的SQLite不支持Default,则可以像下面这样简单地分配默认值:

 [Table("blabla")]
    public class Blabla {
        [PrimaryKey, AutoIncrement, NotNull]
        public int id { get; set; }

        [NotNull]
        public int bleh { get; set; } = 1;
    }

我总是喜欢第二种方式。