我有一个现有的应用程序/数据库。作为升级的一部分,我的任务是添加实体框架。
我遇到了一个问题,当我生成(或重新生成)edmx 时,代码不再识别数据库表中的外键,并且当代码运行时,它抱怨缺少 id,因为我假设它是“猜测”外键应该是什么。
我可以通过将以下属性添加到自动生成的模型定义来解决这个问题。
[ForeignKey("NavigationProperty")]
但是,如果/当重新生成 edmx 时,所有这些都会被吹走,并且必须重新添加。
尽管生成的类是部分的,但由于这些属性被添加到现有成员中,我无法将它们移动到单独的文件中。
那么,我该如何绕过这个选项呢?理想情况下,我想确保在生成 edmx 时它会拾取外键,以便永久修复此问题。如果这不能完成,下一步是询问是否有某种方式可以以编程方式生成这些关联,所以它只完成一次。
谢谢
编辑 - 在示例表定义中添加
这是短信自动生成的代码。外键定义有什么问题吗?
CREATE TABLE [dbo].[ShopProductTypes](
[id] [int] IDENTITY(1,1) NOT NULL,
[Shop_Id] [int] NOT NULL,
[Product_Id] [int] NOT NULL,
[CreatedDate] [datetime] NOT NULL,
[CancelledDate] [datetime] NULL,
[Archived] [bit] NOT NULL,
CONSTRAINT [PK_ShopProductTypes] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ShopProductTypes] WITH CHECK ADD CONSTRAINT [FK_ShopProductTypes_Shop] FOREIGN KEY([Shop_Id])
REFERENCES [dbo].[Shops] ([Id])
GO