我刚刚将我的应用程序发布到IIS服务器(localhost)。
这是检查发布过程。一切顺利,文件被复制,网站开始很好,没有错误,数据库被创建。
我想念一件事:数据。我的种子方法没有被触发,因此缺少初始数据。
我尝试在Microsoft网站上查找,也在StackOverflow中查找无效。
这些是我的迁移配置和种子:
internal sealed class Configuration :
DbMigrationsConfiguration<CobwebsCommon.DAL.CobwebsContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "CobwebsCommon.DAL.CobwebsContext";
}
protected override void Seed(CobwebsCommon.DAL.CobwebsContext context)
{
//if (System.Diagnostics.Debugger.IsAttached == false)
// System.Diagnostics.Debugger.Launch();
Logger.Info("Cobwebs DB seed started");
try
{
var db = new CobwebsContext();
DbGen dbGen = new DbGen(context);
dbGen.GenerateDb();
}
catch (Exception e)
{
Logger.Error("Error creating db: {0}", e);
}
Logger.Info("Cobwebs DB seed finished");
}
}
答案 0 :(得分:0)
好的,所以你告诉我应该使用初始化程序。与开发时不同,在部署时,web.config必须有一个初始化程序(除非你不需要任何db init数据)。
使用VS 2013中的发布对话框发布时,可以选择告知数据库正在使用“代码优先迁移”。 通过本指南:http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-to-iis,应将类型为MigrateDatabaseToLatestVersion的初始化程序添加到web.config中,但在我的情况下,它并没有解释为什么种子方法没有被触发。
我的项目存在的问题是web.config已经有了一个上下文标记,所以我想跳过发布序列添加自己的初始化程序,因为它相信我知道我在做什么,我不知道:)
删除相关的上下文标记已修复此问题。现在调用种子方法,并登录到记录器。
感谢大家的帮助