Azure - 代码优先迁移无法正常工作

时间:2015-09-17 14:11:23

标签: entity-framework azure azure-sql-database azure-mobile-services ef-migrations

我正在尝试使用代码优先迁移为我的azure应用程序创建一个sql server数据库模式(如here所述)。

我的表的基本创建有效,但是azure(entitydata)特定的东西却没有。 CreatedAt没有默认值,没有UpdatedAt Trigger,也没有聚簇索引的问题。这发生在我的所有表格中。多数民众赞成我正在做的事情(显示1桌帐户的问题):

 public Configuration()
 {
        AutomaticMigrationsEnabled = false;
        SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator());
 }


var migrator = new DbMigrator(new Configuration());
migrator.Update();

我的DBMigration-Class中的up-Method如下所示:

CreateTable(
            "dbo.Accounts",
            c => new
                {
                    Id = c.String(nullable: false, maxLength: 128),
                    Username = c.String(nullable: false, maxLength: 30),
                    Salt = c.Binary(),
                    SaltedAndHashedPassword = c.Binary(),
                    MailAddress = c.String(),
                    FacebookId = c.String(),
                    Version = c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"),
                    CreatedAt = c.DateTimeOffset(nullable: false, precision: 7),
                    UpdatedAt = c.DateTimeOffset(precision: 7),
                    Deleted = c.Boolean(nullable: false),
                })
            .PrimaryKey(t => t.Id)
            .Index(t => t.CreatedAt, clustered: true);

我想,EntityTableSqlGenerator应该做这些天蓝色的特定事情,但似乎它什么都没改变。

1 个答案:

答案 0 :(得分:0)

前几天我遇到了同样的问题并暂时解决了这个问题,如下所述:我认为Microsoft EF团队应该永久解决它。

根据我的临时解决方案,您需要在执行迁移文件之前进行一些修改。

  1. 首先,您需要取消继承自EntityData基类的所有实体的CreatedAt属性的聚簇索引声明。

  2. Id,CreatedAt和Deleted字段需要使用默认值声明进行修饰。

  3. 您可以在迁移文件中的每个create命令下添加以下行。

    enter image description here

    您可以从here

    获取其他提示