CreateTable不会创建PrimaryKey或Foreign Kety Constraits

时间:2015-12-05 23:44:43

标签: sqlite-net-extensions

我创建了一个简单的项目。 Aded Sqlite和Sqlite扩展。但是当我创建表格时。表上没有建立Primary和ForeignKey关系。 有人能让我知道我做错了什么。

        SQLiteConnection connection = new SQLiteConnection("me4.db", SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite);
        connection.Execute("PRAGMA foreign_keys = ON");
        connection.Commit();

        connection.CreateTable<Group>();
        connection.CreateTable<UserGroup>();

enter image description here

[Table("group")]
public class Group
{
    public string DisplayName { get; set; }

    public string Descripton { get; set; }

    public bool IsPublic { get; set; }

    public string SmtpAddress { get; set; }

    [PrimaryKey]
    public string Id { get; set; }

}

[Table("usergroup")]
public class UserGroup
{
    public bool IsFavorite{ get; set; }

    public string LastVisitedTime { get; set; }

    [ForeignKey(typeof(Group),Unique=true)]
    public string Id { get; set; }
}

1 个答案:

答案 0 :(得分:0)

SQLite.Net不支持外键,SQLite-Net Extensions使用Indexed属性。

主键按预期工作,不确定数据库浏览器未显示的原因。

要检查它,您可以尝试以下代码:

var group = new Group { Id = 1 };
connection.Insert(group); // Element inserted
connection.Insert(group); // ERROR: constrain violation