在Server数据库中,我有一个三列的表。我在项目中使用实体框架进行数据库操作。这个表不需要ID列,因为它不会被其他表引用。
但是它有两个外键约束和一个主键与这两个外键的组合。这就是我希望数据存储在表中的方式。
例如,企业可以获得一个县,因此业务id是一个外键,而县id是另一个外键。这两个外键的组合是主要的关键,因为企业不能多次收购同一个县。应用程序中的一个功能允许用户进行传输,当时我想更新作为主键一部分的业务id。
调用context.SaveChanges时,代码将抛出一个错误
属性'business_id‘是对象的密钥信息的一部分,不能修改。
我的代码:
CREATE TABLE [dbo].[BusinessCounty]
(
[BusinessId] [int] NOT NULL,
[CountyId] [smallint] NOT NULL,
[Active] [tinyint] NULL,
CONSTRAINT [PK_10_3]
PRIMARY KEY NONCLUSTERED ([BusinessId] ASC, [CountyId] ASC)
)
GO
ALTER TABLE [dbo].[BusinessCounty]
ADD CONSTRAINT [FK_11_4]
FOREIGN KEY([BusinessId]) REFERENCES [dbo].[Business] ([ID])
GO
ALTER TABLE [dbo].[BusinessCounty]
ADD CONSTRAINT [FK_15_3]
FOREIGN KEY([CountyId]) REFERENCES [dbo].[County] ([ID])
GO请告诉我如何更新这把钥匙。
发布于 2019-04-18 00:37:06
这个表不需要
ID列,因为它不会被其他表引用。
这个假设是错误的。ID列不存在,因此其他表可以引用它。ID最基本的目的是充当集群键,即使不为表定义显式ID,也会在内部生成一个ID。
在我看来,为您的表定义一个单列主键是一个很好的实践.您的方案是一个例子,在许多情况下,您遇到了一个没有单列ID的表的问题.解决办法是定义一个。
我认为this question会有帮助。
https://stackoverflow.com/questions/55737405
复制相似问题