无法使用EF上下文

时间:2018-01-24 23:16:14

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

我在使用实体框架和数据库环境方面遇到了困难,因为这对我来说都很新鲜。

我有一个名为GetEnrolleeName的方法,该方法应该接受作为参数,文件的id,并返回一个字符串,该字符串是与该文件关联的登记者的名称。在相同的上下文上运行的方法之间存在某种冲突,我不知道如何解决它。这是我的控制器的代码:

public async Task<IActionResult> TestIndex()
{
    var reports = (from r in _context.DailyObservationReport
                      select new DailyObservationReport()
                      {
                          Id = r.Id,
                          EnrolleeName = Report.GetEnrolleeName(r.FileId, _context), //here is the call I am having trouble with
                          AuthorId = Report.GetAuthorName(r.Id, _context),
                          DayOfTraining = r.DayOfTraining,
                          DateOfTraining = r.DateOfTraining
                      }).ToList();

    var vm = new IndexViewModel()
    {
        Reports = reports
    };

    return View(vm);
}

这是GetEnrolleName方法:

public class Report
{
    public static string GetEnrolleeName(int FileId, ApplicationDbContext _context)
    {
        var x =
            (from f in _context.File
            where f.ID == FileId
            join u in _context.Users
            on f.EnrolleeId equals u.Id
            into FileEnrollee
            from e in FileEnrollee
            select new
            {
                LastName = e.LastName,
                FirstName = e.FirstName,
                MiddleName = e.MiddleName
            }).SingleOrDefault();

        string n = x.LastName + ", " + x.FirstName + " " + x.MiddleName;

        return n;
     }
}

这会产生异常:

  

System.InvalidOperationException:'对此启动了第二个操作   上一次操作完成前的上下文。任何实例成员   不保证是线程安全的'

我确信将上下文作为参数从一个类发送到另一个类是一个问题,但这是我能想到的最简单的工作方式。我需要一些帮助来解决上面的错误并使其正常工作。

0 个答案:

没有答案