5

我似乎无法让我的代码优先迁移来创建我的 SQL Azure 数据库。

它一直抱怨 SQL Azure 缺乏对没有聚集索引的表的支持,而且我找不到创建数据库的方法。

注意:CreateDatabaseIfNotExists用于在第一次创建数据库时创建更改跟踪表,因为显然DropCreateDatabaseIfModelChanges 不适合您

    public partial class IUnityDbContext : DbContext
    {
        public IUnityDbContext()
            : base("Name=IUnityDbContext")
        {
            Database.SetInitializer(new CreateDatabaseIfNotExists<IUnityDbContext>()); 
            //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<IUnityDbContext>());
        }

        public DbSet<User> Users { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new UserMap());

            base.OnModelCreating(modelBuilder);
        }
    }




    public partial class Initial : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "dbo.Users",
                c => new {
                        ... 
                     }
            ).PrimaryKey(u => u.UserId, clustered: true);            
        }

        public override void Down()
        {
            DropTable("dbo.Users");
        }
    }

如果我尝试`Update-Database 我得到

 Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.

未创建数据库。

更新:我从头开始并按照本指南启用自动迁移(刮掉数据库并从不存在的数据库开始,因此我不必从初始迁移中删除向上/向下代码)

这次成功创建了我的数据库(之前没有做到这一点),但是没有创建表,并且我仍然得到与以前相同的错误,即不支持没有聚集索引的表。

请指教

4

2 回答 2

4

原来是 Entity Framework 6 -Alpha 3 中的一个错误。我想我应该提到这一点。

https://stackoverflow.com/a/15282861/1267778

于 2013-03-14T01:00:30.220 回答
2

这个看起来很相似(尽管它不是理想的解决方案恕我直言):Entity Framework Many-to-Many Clustered vs. Nonclustered Index

于 2013-03-13T07:08:25.173 回答