【发布时间】:2015-05-04 14:18:41
【问题描述】:
我未能在两个表之间创建 1 到 0..1 的关系,其中主键是由两列组成的复合键。
表以多对多关系导入 EF,将关系更改为 1 到 0..1 或 1 到 1 会导致以下错误:
多重性在角色中无效,因为从属角色 属性不是关键属性,的上限 依赖角色的多重性必须是 *
主表:
CREATE TABLE [dbo].[MeasurementBlobs] (
[MeasurementResultId] INT NOT NULL,
[ValueType] SMALLINT NOT NULL,
[Id] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL,
[Value] VARBINARY(MAX) FILESTREAM NOT NULL,
CONSTRAINT [PKMeasurementBlobs] PRIMARY KEY CLUSTERED ([MeasurementResultId], [ValueType]),
CONSTRAINT [FKMeasurementBlobsMeasurementResults] FOREIGN KEY ([MeasurementResultId]) REFERENCES [dbo].[MeasurementResults] ([Id]),
CONSTRAINT [UQMeasurementBlobsId] UNIQUE ([Id])
)
GO
外键表:
CREATE TABLE [dbo].[MeasurementBlobsMeasurementClusters]
(
[MeasurementResultId] INT NOT NULL,
[ValueType] SMALLINT NOT NULL,
[MeasurementClusterId] INT NOT NULL,
CONSTRAINT [PKMeasurementBlobsMeasurementClusters] PRIMARY KEY CLUSTERED ([MeasurementResultId], [ValueType] ASC, [MeasurementClusterId] ASC),
CONSTRAINT [FKMeasurementBlobsMeasurementClustersMeasurementBlob] FOREIGN KEY ([MeasurementResultId], [ValueType]) REFERENCES [dbo].[MeasurementBlobs] ([MeasurementResultId], [ValueType]),
CONSTRAINT [FKMeasurementBlobsMeasurementClustersMeasurementCluster] FOREIGN KEY ([MeasurementClusterId]) REFERENCES [dbo].[MeasurementClusters] ([Id])
)
GO
每个类型继承都使用 table table 不是一种选择。
【问题讨论】:
-
模型首先假设您使用 edmx 来生成数据库;鉴于您在这里有 SQL 并声明表已导入 EF,这看起来是数据库优先。另外,当您说“表是通过多对多关系导入的”时,您是什么意思?我没有看到多对多中需要的第三张表?
-
"将关系更改为 1 到 0..1 或 1 到 1" 你是怎么做到的?请出示地图。
-
@Claies 当然是你的权利,首先将标题更改为数据库。好吧,没有第三张桌子,它们是这样导入的。
标签: c# sql sql-server entity-framework ef-model-first