我正在使用代码优先迁移方法构建MVC 5网站。另外,请注意我正在使用Visual Studio Online链接到我的Azure网站。因此,当我在VS 2013中使用Team Explorer进行签入时,它会自动部署到Azure网站。
当地一切正常。但是,在将其部署到Azure(签入)时,不会执行以下几点:
由于上述原因,我必须手动创建新表或添加测试数据。谷歌它的解决方案我已经读过,这是.Net框架中的一个问题,因为默认情况下会设置索引类型(非聚集)。
所以,我试图使用不同的替代方案。例如:
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "MySolution.Models.ApplicationDbContext";
SetSqlGenerator("System.Data.SqlClient", new AzureSqlGenerator());
}
我在哪里创建了 AzureSqlGenerator 类:
public class AzureSqlGenerator : SqlServerMigrationSqlGenerator
{
protected override void Generate(CreateTableOperation createTableOperation)
{
if ((createTableOperation.PrimaryKey != null)
&& !createTableOperation.PrimaryKey.IsClustered)
{
createTableOperation.PrimaryKey.IsClustered = true;
}
base.Generate(createTableOperation);
}
}
但是,这不起作用。
长话短说,我有以下两个问题:
提前致谢。
答案 0 :(得分:0)
您可以迁移表格。要迁移数据,您应该使用实体框架的种子方法。
public class SchoolDBInitializer : DropCreateDatabaseAlways<SchoolDBContext>
{
protected override void Seed(SchoolDBContext context)
{
IList<Standard> defaultStandards = new List<Standard>();
defaultStandards.Add(new Standard() { StandardName = "Standard 1", Description = "First Standard" });
defaultStandards.Add(new Standard() { StandardName = "Standard 2", Description = "Second Standard" });
defaultStandards.Add(new Standard() { StandardName = "Standard 3", Description = "Third Standard" });
foreach (Standard std in defaultStandards)
context.Standards.Add(std);
base.Seed(context);
}
}
http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx
在我看来,您可以做的最好,使用Sql Server数据工具。它将帮助您处理表和数据,因为它使用声明模式。你宣布&#39;应该如何成为您的数据库,并处理de更新。