0

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

我遇到了一个问题,当我生成(或重新生成)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
4

1 回答 1

0

我找到了这个:

http://blogs.msdn.com/b/dsimmons/archive/2007/09/01/ef-codegen-events-for-fun-and-profit-aka-how-to-add-custom-attributes-to-我的生成类.aspx

它涉及更多。

于 2013-03-18T17:54:43.543 回答