是否可以在Sqite中创建与文本列的外键关系?

时间:2017-02-03 08:57:55

标签: entity-framework sqlite

我想要一些Fk关系,如下面的代码,让我有一个表员工& EmpMetadata

CREATE TABLE [Employee] (
    [Empid] integer PRIMARY KEY NOT NULL,
    [FName] text NOT NULL,
    [lname] text NOT NULL
)

CREATE TABLE [EmpMetadata] (
    [Name] text NOT NULL,
    [Value] text NOT NULL,
    [lname] text,
    PRIMARY KEY (Name, Value, lname),
    CONSTRAINT [FK_Emp] FOREIGN KEY ([lname]) REFERENCES [Employee]
    ([lname]) ON UPDATE CASCADE ON DELETE CASCADE
);

当我执行它时,它成功完成,但是当为此生成 edmx 时,关系未显示。这两个表显示为单独的实体。

我在员工表格中使用了Constraint lname_unique UNIQUE(lname),虽然它已正确排除,但在 edmx 文件中却没有显示关系。

但如果我使用

 CREATE TABLE [EmpMetadata] (
        [Id] integer NOT NULL,
        [Value] text NOT NULL,
        [lname] text,
        PRIMARY KEY (Id, Value, lname),
        CONSTRAINT [FK_Emp] FOREIGN KEY ([Id]) REFERENCES [Employee]
        ([Empid]) ON UPDATE CASCADE ON DELETE CASCADE
    );

然后在 edmx 文件中,FK关系正确显示。

如果我使用 text 列作为外键来关联这些表,有人能告诉我它为什么不生成Fk关系吗?

1 个答案:

答案 0 :(得分:0)

所以我得到了表格结构应该是这样的灵魂:

CREATE TABLE [Employee] (
    [Empid] integer NOT NULL,
    [FName] text NOT NULL,
    [lname] text NOT NULL,
    Primary Key (Empid, lname)
)

CREATE TABLE [EmpMetadata] (
    [Name] text NOT NULL,
    [Value] text NOT NULL,
    [lname] text,
    PRIMARY KEY (Name, Value, lname),
    CONSTRAINT [FK_Emp] FOREIGN KEY ([lname]) REFERENCES [Employee]
    ([lname]) ON UPDATE CASCADE ON DELETE CASCADE
);