无法从服务创建DatabaseContext

时间:2016-06-10 10:55:28

标签: c# entity-framework windows-services asp.net-identity-2

我有服务。

scheduler.Start();

IJobDetail job = JobBuilder.Create<ReportJob>()
           .WithIdentity("reportJob", "reportGroup")
           .Build();

ITrigger trigger = TriggerBuilder.Create()
           .WithIdentity("reportTrigger", "reportGroup")
           .StartNow()
           .WithCronSchedule("0 * * ? * Fri")
           .Build();

scheduler.ScheduleJob(job, trigger);

在ReportJob中我有

 var repository = new StoreReportRepository();
 repository.GenerateReports();

在GenerateReports中我尝试访问DatabaseContext

var db = new DatabaseContext()

我收到错误:

  

外键'FK_dbo.UserSession_dbo.User_UserId'引用无效   表'dbo.User'。无法创建约束或索引。见前   错误。

构造函数DatabaseContext():

    public ObjectContext Context
    {
        get {

            return (this as IObjectContextAdapter).ObjectContext;
        }
    }

    public DatabaseContext()
        : base("name=DatabaseContext")
    {
        this.Context.ContextOptions.LazyLoadingEnabled = true;
    }

我做错了什么? 感谢

PS UserSession.cs

public class UserSession
{
    [Key]
    public Guid Id { get; set; }
    public Guid UserId { get; set; }
    public DateTime Expiration { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我找到了一个适合我的解决方案。 问题在于Windows服务是从错误的帐户运行的。所以它创建了新的数据库。我改变了帐户,一切正常。

在服务中找到您的服务 - &gt;右键单击 - &gt;属性 - &gt;选项卡登录 - &gt;输入您的帐户名称和密码。example