实体框架保持覆盖属性.需要其他解决问题的方法
本文关键字:其他 解决问题 方法 属性 框架 覆盖 实体 | 更新日期: 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这有点复杂