首先与EF6数据库建立1:0..1关系

时间:2019-09-04 08:46:22

标签: sql-server entity-framework entity-framework-6

在我的模型中,我有三个表StorageHaulStoragePlace。一个存储可以 成为一个地点或运输。对于StoragePlace,我已经实现了1:0..1关系。问题是Haul实体。

CREATE TABLE dbo.Haul
(
    ID INT NOT NULL PRIMARY KEY IDENTITY, 
    ID_Storage INT NOT NULL UNIQUE,
    Arrival DATETIME NOT NULL DEFAULT getdate(), 
    Depature DATETIME NULL,

    CONSTRAINT FK_Haul_to_Storage FOREIGN KEY (ID_Storage) REFERENCES Storage(ID) ON DELETE CASCADE
)
GO

/** --- See edit below --
CREATE UNIQUE NONCLUSTERED INDEX UQX_Storage
    ON Haul(ID_Storage)
    WHERE ID_Storage IS NOT NULL;
GO
**/

--------------------------------------------------

CREATE TABLE dbo.Storage
(
    ID INT NOT NULL PRIMARY KEY IDENTITY,
    Description1 NVARCHAR(100) NULL,
    Description2 NVARCHAR(100) NULL,
    AddedBy NVARCHAR(50) NOT NULL
)

--------------------------------------------------

CREATE TABLE dbo.StoragePlace
(
    ID INT NOT NULL PRIMARY KEY,
    ID_PlantArea INT NOT NULL,

    CONSTRAINT FK_StoragePlace_to_Storage FOREIGN KEY (ID) REFERENCES Storage(ID) ON DELETE CASCADE,
    CONSTRAINT FK_StoragePlace_to_PlantArea FOREIGN KEY (ID_PlantArea) REFERENCES PlantArea(ID) ON DELETE CASCADE
)

我的想法是,UQX_Storage将触发EF6接受HaulStorage之间的1:0..1关系。当然,这是行不通的。它仍然坚持1:*的关系,根据我的理解,上述模型不可能实现这种关系。

如何在HaulStorage之间建立预期的1:0..1关系?

编辑:

我刚刚意识到ID_Storage字段永远不会是NULL,所以我用简单的UQX_Storage代替了ID_Storage INT NOT NULL UNIQUE,“ constraint”。但是,那也不能解决问题。

0 个答案:

没有答案