c# - 在移动服务数据库上启用代码优先迁移时出错

标签 c# sql entity-framework ef-code-first azure-sql-database

我最近创建了一个 Azure 移动服务项目(C# 后端)并将其附加到 Azure SQL 数据库。我一直在尝试在该支持数据库上启用代码优先迁移,但是当我尝试更新数据库时它会抛出错误。

我完成了启用迁移的所有常规步骤(Enable-Migrations、Add-Migration)。但是当我尝试更新数据库时,它返回以下错误:

Cannot create more than one clustered index on table 'dbo.Appointments'. Drop the existing clustered index 'PK_dbo.Appointments' before creating another.

为什么会这样?我的数据库中没有任何表,项目几乎是默认的。

最佳答案

关于从自定义实体类派生的一些答案是可行的,但它们不是理想的解决方案。正如 EF 团队(和其他人)所提到的,您只需将此行添加到上下文配置构造函数中即可。

 SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator());

这将消除创建迁移时的错误,并允许您通过 powershell 命令更新数据库。

关于c# - 在移动服务数据库上启用代码优先迁移时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22923672/

相关文章:

c# - LINQ to Entities 不支持指定的类型成员 'Title'

c# - 在 ASP.NET MVC 中更改 View 的布局(母版页)而不重新创建它

c# - 如何防止 Web API 将我的模型从 JSON 序列化为字符串

mysql - 将表一分为二并保存关系

c# - EF 5 : How to cancel a longrunning query in a async Task

c# - Entity Framework 中 "CASE WHEN THEN"(T-SQL) 的等价物是什么?

c# - 我能否以某种方式评估表达式以确定并可能设置为 null 的属性?

c# - EnterpriseLibrary 记录器错误 : Object synchronization method was called from an unsynchronized block of code

mysql - 在@OnetoOne 共享主键场景中更改生成的 Hibernate 外键

sql - 使用 SELECT (max)T-SQL 返回额外列