2017-02-03 1 views
0

Я хочу, чтобы некоторые Fk отношение как ниже код, пусть у меня есть таблица Сотрудник & EmpMetadataВозможно ли создать отношение внешнего ключа с текстовыми столбцами в Sqite?

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 
); 

Когда я excecuting, он та или иная строчка успешно, но когда м генерации EDMX для этого соотношение не отображается. Эти две таблицы отображаются как отдельный объект.

Я использовал Constraint lname_unique UNIQUE(lname) в таблице Employee, хотя он был правильно обработан, но в edmx file его не показано отношение.

Но если я использую

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 правильно показывает.

Может ли кто-нибудь сказать мне, почему он не генерирует отношения Fk, если я использую текст столбец как внешний ключ, чтобы связать эти таблицы?

ответ

0

Так что я получил soultion структура таблицы должна выглядеть так:

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 
);