发布的IIS上不会触发种子方法

时间:2015-07-02 12:59:59

标签: c# asp.net-mvc entity-framework iis ef-migrations

我刚刚将我的应用程序发布到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");

    }
}

1 个答案:

答案 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已经有了一个上下文标记,所以我想跳过发布序列添加自己的初始化程序,因为它相信我知道我在做什么,我不知道:)

删除相关的上下文标记已修复此问题。现在调用种子方法,并登录到记录器。

感谢大家的帮助