在VSS2013中使用MVC5创建与EF6.0连接的数据库。之前该模型已经使用EF5.0,MVC3和VSS2010创建。
使用MS SQL Express对现有表上的数据库进行了更改 - 在指向主父记录的子表上添加了一些外部整数键,并创建了一个手动输入的测试数据记录集以进行测试。添加了一些额外的属性。一些新的不相关的表格。
“从数据库更新模型”获取了表格更改,但拒绝接受这些FK关联。所有导航都丢失了。
模型已删除,在EF6.0中重新创建。 EDMX文件再次获取所有表和较旧的FK关联。新的只是被忽略了。
这里没有必要添加表作为示例,这是使用整数的简单父子FK内容。脚本SQL显示旧的和新的FK约束是可比较的。我放弃了模型并重新创建了几次,使用不同的ConnectionStrings,名称在发生混乱时发生变化。没有快乐。
我完全不知道为什么它可以拿起一些,而不是其他人。我需要一些“陷阱”的线索。任何人吗?
EF6.0.0 MVC5.1 .NET4.5
更新:非功能性FK示例
ALTER TABLE [dbo]。[Cli_Address] ADD CONSTRAINT [FK_Cli_Address_WebUserProfileX] FOREIGN KEY([UserProfileFK])REFERENCES [dbo]。[WebUserProfile]([UserID]);
答案 0 :(得分:3)
你被这个击中了:
由此不需要的索引引起:
在[dbo]上创建独特的非集群索引[IX_WebProfile]。[WebUserProfile] ( [UserID] ASC )WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,SORT_IN_TEMPDB = OFF,IGNORE_DUP_KEY = OFF,DROP_EXISTING = OFF,ONLINE = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON)ON [PRIMARY] GO
删除索引,一切正常
(我认为你必须删除并重新创建fks才能删除索引)
更新:我已修复此问题,因此此方案不再中断,请参阅https://entityframework.codeplex.com/workitem/667