我想要一些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关系吗?
答案 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
);