具有Entity Framework 6 Alpha 2的现有Azure数据库

时间:2012-12-14 09:04:24

标签: entity-framework azure azure-sql-database entity-framework-6

我在azure上有一个数据库,需要聚集索引。我想使用Entity-Framework 6 Alpha 2,因为我想使用新的异步功能。当我使用SQL Express 2012在我的本地计算机上测试它时一切都很好,但是当我用我的azure数据库尝试它时,我得到以下错误:

此版本的SQL Server不支持没有聚簇索引的表。请创建聚簇索引,然后重试。

我不知道该怎么做,因为当我用空数据库测试它时,每个主键都是一个聚簇索引。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否会使用“Windows Azure上的现有数据库”并使用EF 6对您的情况进行一些说明?首先 - 您使用的是EF CodeFirst,ModelFirst,DatabaseFirst吗? 那么如果你真的有现有的数据库,你是如何创建它的? DB + Schema手动,使用一些向导(SSMS,SQL Azure迁移向导,EF CodeFirst创建它等等)。现有数据库如何在Azure中结束?

然后跟踪完整的错误消息,检查它发生了哪个表,并在该表上手动添加聚簇索引。确实,您在SQL Server中创建的每个主键默认情况下也是CLUSTERED。但是如果首先创建了表,那么主键被添加为单独的DDL语句(ALTER TABLE ....),它可能没有被创建为CLUSTERED。

所以,消息很清楚 - 请先创建聚簇索引。找出SQL Azure抱怨哪个表并在其上创建聚簇索引。如果它没有主键,只需添加一个作为CLUSTERD:

ALTER TABLE [dbo].[Individual]
ADD CONSTRAINT [PK_Individual_CustomerID]
PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)

如果它有主键 - 检查包含哪些列,请将其删除,然后将其重新创建为群集。