将MVC4部署到Azurewebsites时未创建数据表

时间:2012-10-21 23:27:43

标签: asp.net-mvc entity-framework azure ef-code-first unit-of-work

因此,在部署到azure(使用mvc4代码第一个实体框架)之后,经过数小时的数小时计算出我的数据库表未被创建的原因,我终于想出了我的后端设置方式。我有我的通用存储库,工作单元,datacontext等。(这不会导致问题)。导致我的数据表(500服务器错误)无法创建的是我的UnitOfWorkFilter。当我应用它时,它不起作用,当我拿走它工作。所以我的问题是有人知道为什么这会导致问题以及我可以做些什么来解决这个问题,因为我想继续使用我的过滤器。

这是我的工作单元过滤器:

    public class UnitOfWorkFilter : System.Web.Mvc.ActionFilterAttribute
    {

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>();

        unitOfWork.Begin();
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>();
        if (filterContext.Exception != null)
        {
            unitOfWork.Rollback();
            return;
        }
        try
        {
            unitOfWork.Commit();
        }
        catch
        {
            unitOfWork.Rollback();
            throw;
        }
        finally
        {
            unitOfWork.Dispose();
        }
    }
}
}

1 个答案:

答案 0 :(得分:1)

添加Trace语句,以便您可以看到Azure中发生了什么。使用以下代码设置Trace:

private void ConfigDiagnostics()
{
    DiagnosticMonitorConfiguration config = 
        DiagnosticMonitor.GetDefaultInitialConfiguration();
    config.ConfigurationChangePollInterval = TimeSpan.FromMinutes(1d);
    config.Logs.BufferQuotaInMB = 500;
    config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
    config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);

    DiagnosticMonitor.Start(
        "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", 
        config);
}