我已经在Microsoft Azure(Web App)中使用ButBucket Git存储库设置了“持续部署”。我在电脑上成功地运行了Code First Migrations,它创建了表并插入了数据。但当我同步分支时,“迁移的Seed方法在Azure上没有运行”。
因此,Azure从BitBucket获取更改,根据需要创建表,但不运行种子方法(每个表都保持为空)。
您能否建议一种解决方案,在应用新的迁移时自动在Azure上运行Seed方法(或者如果那是唯一的解决方案,那么在Azure从BitBucket构建后每次运行)?
附加信息:
- MigrationHistory表包含迁移,因此它们已经运行过。 - 我已将AutomaticMigrationsEnabled = true;但问题仍然存在。 - 在Azure上有一个Web App可以进行构建和迁移,以及一个SQL数据库,该数据库在Web.config中的ConnectionString中被引用。
Configuration.cs
我发现与种子方法问题相关的问题和解决方案仅适用于从Visual Studio直接部署,但这不是我想要的方式。
此外,虽然有使用不同SQL管理项目的解决方案,但如果像在我的本地机器上一样工作,则MVC项目中的代码优先迁移是最清洁的解决方案。
因此,Azure从BitBucket获取更改,根据需要创建表,但不运行种子方法(每个表都保持为空)。
您能否建议一种解决方案,在应用新的迁移时自动在Azure上运行Seed方法(或者如果那是唯一的解决方案,那么在Azure从BitBucket构建后每次运行)?
附加信息:
- MigrationHistory表包含迁移,因此它们已经运行过。 - 我已将AutomaticMigrationsEnabled = true;但问题仍然存在。 - 在Azure上有一个Web App可以进行构建和迁移,以及一个SQL数据库,该数据库在Web.config中的ConnectionString中被引用。
Configuration.cs
internal sealed class Configuration : DbMigrationsConfiguration<MyInsidR.Models.ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "MyInsidR.Models.ApplicationDbContext";
}
protected override void Seed(ApplicationDbContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
context.Prophecies.AddOrUpdate(p => p.ID,
new Prophecy() { ID = 1, Text = "Fűben iszogatós, sírva nevetős."}
);
context.Interesteds.AddOrUpdate(x => x.ID,
new Interested() { ID = 1, Email = "teszt.elek@gmail.com", FirstName = "Elek", LastName = "Teszt", RegistrationDate = DateTime.Now }
);
var tag1 = new Tag() { ID = 1, Name = "Karaoke", ApplyTo = TagApplication.All, Type = TagType.Games };
var tag3 = new Tag() { ID = 3, Name = "4 rooms", ApplyTo = TagApplication.All, Type = TagType.Misc };
var tag4 = new Tag() { ID = 4, Name = "Helipad", ApplyTo = TagApplication.All, Type = TagType.Vip };
context.Tags.AddOrUpdate(x => x.ID,
tag1, tag3, tag4
);
var indicatorIcon1 = new IndicatorIcon() { ID = 1, VisualClass = IndicatorIcon.VisualClassType.Hidden, Name = "No Indicator Icon", Description = "Nothing special, just a regular place or event." };
var indicatorIcon2 = new IndicatorIcon() { ID = 2, VisualClass = IndicatorIcon.VisualClassType.Fire, Name = "Hot", Description = "This place or event is very popular at the moment. There are big parties and a big fuss around it." };
context.IndicatorIcons.AddOrUpdate(x => x.ID,
indicatorIcon1, indicatorIcon2
);
AddUserAndRole(context);
}
bool AddUserAndRole(ApplicationDbContext context)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var identityResult = roleManager.Create(new IdentityRole("Admin"));
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
var user = new ApplicationUser()
{
UserName = "myinsidr@gmail.com",
};
identityResult = userManager.Create(user, "Qwertz1234!");
if (identityResult.Succeeded == false)
return identityResult.Succeeded;
identityResult = userManager.AddToRole(user.Id, "Admin");
return identityResult.Succeeded;
}
}
我发现与种子方法问题相关的问题和解决方案仅适用于从Visual Studio直接部署,但这不是我想要的方式。
此外,虽然有使用不同SQL管理项目的解决方案,但如果像在我的本地机器上一样工作,则MVC项目中的代码优先迁移是最清洁的解决方案。