2010-08-25 110 views
8

我设计了一个实体数据模型,其中存在多对多关系的两个实体。当我自动生成SQL代码为这个模型生成数据库时,它生成了一个表格(两列)来跟踪这个多对多的关联。但是,这个表在两列上都有一个PRIMARY KEY NONCLUSTERED。实体框架多对多群集与非群集索引

因为我想要这个工作在SQL Azure上,它不喜欢只有非聚簇索引的表,所以我想知道是否有一种很好的方式来告诉代码生成来生成聚簇索引?谢谢!

+0

你试过给它一个代理键吗? – Nix 2010-08-25 16:32:16

+0

我在同一条船上。我意识到这是一个古老的问题,但似乎没有得到回答。 Azure仍不支持EF生成的非聚簇键。 – Allan 2015-06-11 14:16:58

回答

3

我有另一个名为Model.indexes.sql的文件,其中包含用于创建超出EF生成的基本指针的脚本的脚本,例如用于性能优化的脚本。

虽然这不是很理想,我加入到这一变化的指数下降,为每一个EF关联的非聚集索引转换为索引的:。

ALTER TABLE [DBO] [MyAssociation] DROP约束[PK_MyAssociation] GO ALTER TABLE [dbo]。[MyAssociation] ADD CONSTRAINT [PK_MyAssociation] PRIMARY KEY CLUSTERED([Table1_Id],[Table2_Id] ASC); GO

这是在每个“从模型生成数据库...”之后执行的。我会喜欢更优雅的解决方案。