Sql server 首先执行与EF6数据库的1:0..1关系
在我的模型中,我有三个表,Sql server 首先执行与EF6数据库的1:0..1关系,sql-server,entity-framework,entity-framework-6,Sql Server,Entity Framework,Entity Framework 6,在我的模型中,我有三个表,Storage、Haul和StoragePlace。一个仓库可以是一个地方,也可以是一个运输点。对于StoragePlace,我已经实现了1:0..1的关系。问题在于拖运实体 CREATE TABLE dbo.Haul ( ID INT NOT NULL PRIMARY KEY IDENTITY, ID_Storage INT NOT NULL UNIQUE, Arrival DATETIME NOT NULL DEFAULT getdate(
Storage
、Haul
和StoragePlace
。一个仓库可以是一个地方,也可以是一个运输点。对于StoragePlace
,我已经实现了1:0..1的关系。问题在于拖运
实体
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\u存储
将触发EF6接受拖运
和存储
之间的1:0..1关系。当然,这是行不通的;它仍然坚持1:*关系,根据我的理解,这在上述模式下是不可能的
如何在拖运
和存储
之间实施预期的1:0..1关系
编辑:
我刚刚意识到,
ID\u Storage
字段永远不能为NULL
,因此我用一个简单的ID\u Storage INT NOT NULL UNIQUE,
替换了UQX\u Storage
“约束”。然而,这也没有解决问题。类似:@SteveGreene我已经找到了那篇帖子。这对数据库有帮助,但对EF6没有帮助。