实体框架保持覆盖属性.需要其他解决问题的方法

本文关键字:其他 解决问题 方法 属性 框架 覆盖 实体 | 更新日期: 2023-09-27 18:04:44

我有一个现有的应用程序/数据库。我的任务是添加实体框架作为升级的一部分。

我遇到了一个问题,当我生成(或重新生成)edmx时,代码不再识别数据库表中的外键,并且当代码运行时,它会抱怨缺少id,因为,我认为,它正在"猜测"外键应该是什么。

我可以通过向自动生成的模型定义中添加以下属性来解决这个问题。
[ForeignKey("NavigationProperty")] 

但是,如果/当edmx重新生成时,所有这些都被吹走了,必须重新添加。

虽然生成的类是局部的,但由于这些属性被添加到现有成员中,所以我不能将它们移动到单独的文件中。

如何绕过这个选项呢?理想情况下,我希望确保在生成edmx时,它能够拾取外键,以便永久修复此问题。如果不能这样做,下一步是询问是否有某种方法以编程方式生成这些关联,以便只完成一次。

感谢

edit -添加到样例表定义

这是短信自动生成的代码。外键定义有什么问题吗?

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

实体框架保持覆盖属性.需要其他解决问题的方法

我发现了这个:

http://blogs.msdn.com/b/dsimmons/archive/2007/09/01/ef-codegen-events-for-fun-and-profit-aka-how-to-add-custom-attributes-to-my-generated-classes.aspx

这有点复杂