我正在尝试使用代码优先迁移为我的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应该做这些天蓝色的特定事情,但似乎它什么都没改变。
答案 0 :(得分:0)
前几天我遇到了同样的问题并暂时解决了这个问题,如下所述:我认为Microsoft EF团队应该永久解决它。
根据我的临时解决方案,您需要在执行迁移文件之前进行一些修改。
首先,您需要取消继承自EntityData基类的所有实体的CreatedAt属性的聚簇索引声明。
Id,CreatedAt和Deleted字段需要使用默认值声明进行修饰。
您可以在迁移文件中的每个create命令下添加以下行。
您可以从here
获取其他提示