从其他项目调用db以获取数据

时间:2016-09-09 15:07:43

标签: c# asp.net-mvc database entity-framework asp.net-mvc-4

以下是该方案。我有一个ASP.NET MVC 5应用程序。我正在使用实体框架6,而我目前正在尝试创建一个控制台应用程序,该应用程序将作为Windows任务计划运行,每天在特定时间向特定人员发送电子邮件。

为此,我在我的解决方案中创建了一个单独的项目,它是一个控制台应用程序。我需要访问我的asp.net mvc应用程序使用的数据库,以便我可以在指定的日期获得正确的人的电子邮件。

最好的方法是什么?我试图在我的asp.net mvc应用程序中创建一个类来设置DbContext并访问数据库并返回结果。但是,当我在我的控制台项目中创建此类的实例并调用该方法以按日期获取某个人时,它会抛出异常An unhandled exception of type 'System.Data.Entity.Core.EntityCommandExecutionException' occurred in EntityFramework.SqlServer.dll

这是我在asp.net mvc应用程序中创建的课程。

public class DataService
{
    private ApplicationDbContext db = new ApplicationDbContext();

    public DateTime GetDishDate(DateTime date)
    {
        return db.DishDates.Where(x => x.Date.Year == date.Year && x.Date.Month == date.Month).FirstOrDefault().Date;
    }

    public string GetPersonPhoneNumber(DateTime dishDate)
    {
        return db.DishDates.Where(x => x.Date == dishDate).FirstOrDefault().Person.PhoneNumber;
    }

    public string GetPersonPhoneCarrier(DateTime dishDate)
    {
        var phoneCarrierId = db.DishDates.Where(x => x.Date == dishDate).FirstOrDefault().Person.PhoneCarrier;
        return db.PhoneCarriers.Where(x => x.ID == phoneCarrierId).FirstOrDefault().EmailExtension;

    }
}

这是我的控制台项目中的代码,它试图利用这个" Service"类。

public void RunSchedule()
    {
        string email = "";

        // Find if a dish date exists for this day
        var today = DateTime.Now;
        var dishDate = dataService.GetDishDate(today);

        if (dishDate != null)
        {
            email = dataService.GetPersonPhoneNumber(dishDate) + "@" + dataService.GetPersonPhoneCarrier(dishDate);
        }

        // Send the email
        SendEmail(email);
    }

同样,当我执行dataService.GetDishDate()时会抛出上述异常。

我应该怎么做的任何帮助或建议???我想我试图从不同的项目访问数据,最好的方法是什么?

0 个答案:

没有答案