OrderAdditionalDetails

OrderAdditionalDetails

我有两个表:

CREATE TABLE Order (
    orderId INTEGER IDENTITY NOT NULL,
    PRIMARY KEY (orderId)
)

CREATE TABLE OrderAdditionalDetails (
    additionalDetailsId INTEGER IDENTITY NOT NULL,
    orderId INTEGER NOT NULL,
    PRIMARY KEY (additionalDetailsId),
    FOREIGN KEY (orderId) REFERENCES Order(orderId)
)


我在OrderId字段的OrderAdditionalDetails表上声明了一个外键(FK_OrderAdditionalDetails_Order)。我在OrderAdditionalDetails表中的orderId字段上也有一个“唯一”约束。这个想法是,每个“订单”在“ OrderAdditionalDetails”表中将有零个或一个条目。

所有这些都由实体框架模型文件处理,但是当我尝试创建Navigation属性时,它只允许我声明一对多关系。我得到的错误如下:

运行转换:多重性在关系“ FK_OrderAdditionalDetails_Order”中的角色“ OrderAdditionalDetails”中无效。因为从属角色属性不是关键属性,所以从属角色多重性的上限必须为*。

我真的不确定这意味着什么-谷歌搜索错误并没有帮助。有人可以阐明我做错了什么吗?

最佳答案

OrderAdditionalDetails表中,删除additionalDetailsID列,并将orderID设置为CLUSTERED PRIMARY KEY。保留您已有的FOREIGN KEY。这是实现此目标的正确方法。

additionalDetailsId列不仅没有添加任何值,而且还占用了表更多的空间,从而使情况变得更糟。 orderID已经足够了;您不需要辅助人工密钥,它只是orderID的替代。

关于c# - 使用 Entity Framework 创建一对一或“零或一个”关系时遇到麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11586788/

10-10 23:26