Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 3实体框架空结果集_C#_.net_Asp.net Mvc 3_Entity Framework_Epplus - Fatal编程技术网

C# MVC 3实体框架空结果集

C# MVC 3实体框架空结果集,c#,.net,asp.net-mvc-3,entity-framework,epplus,C#,.net,Asp.net Mvc 3,Entity Framework,Epplus,我正在开发一个应用程序,其中它返回一个excel报告,每个员工都有多个角色以及每个角色的预期和实际工作时间。例如,我可能被列为某个专栏的开发人员,而另一个专栏的BA!。它使用的查询正在返回一个空结果集 public ActionResult ExpectedVsActual() { try { ProjectTotalsReportViewModel model = new ProjectTotalsReportViewM

我正在开发一个应用程序,其中它返回一个excel报告,每个员工都有多个角色以及每个角色的预期和实际工作时间。例如,我可能被列为某个专栏的开发人员,而另一个专栏的BA!。它使用的查询正在返回一个空结果集

    public ActionResult ExpectedVsActual()
    {

        try
        {
            ProjectTotalsReportViewModel model = new ProjectTotalsReportViewModel();

            Employee currentUser = DataHelper.GetEmployee(User, db);

            model.AvailableEmployees = db.Employees.OrderBy(e => e.LastName).ThenBy(e => e.FirstName).ToList();

            if (currentUser.SecurityRoleCode == Constants.SECURITY_ROLE_CODE_ADMIN)
            {
                model.AvailableProjects = (db.Projects.Any() ? db.Projects.Where(p => p.ProjectCategoryCode == Constants.PROJECT_CATEGORY_DIRECT).OrderBy(p => p.ProjectName).Distinct().ToList() : new List<Project>());

                model.ProjectRate = (db.EmployeeProjectRates.Any() ? db.EmployeeProjectRates.Where(epr => epr.EmployeeID == epr.EmployeeID).OrderBy(epr => epr.EmployeeID).Distinct().ToList(): new List<EmployeeProjectRate>());
            }
            else
            {
                model.AvailableProjects = (db.EmployeeProjectRates.Any(epr => epr.EmployeeID == currentUser.EmployeeID && epr.ProjectRoleCode == Constants.PROJECT_ROLE_PROJECT_MANAGER) ? db.EmployeeProjectRates.Where(epr => epr.EmployeeID == currentUser.EmployeeID && epr.ProjectRoleCode == Constants.PROJECT_ROLE_PROJECT_MANAGER).Select(epr => epr.Project).OrderBy(p => p.ProjectName).Distinct().ToList() : new List<Project>());
            }

            model.SelectedEmployeesForCheckBox = model.AvailableEmployees;
            model.SelectedProjectsForCheckBox = model.AvailableProjects;

            ViewBag.InitialLoad = true;

            return PartialView("_ExpectedVsActual", model);
        }
        catch
        {
            return null;
        }
    }


[HttpPost]
    public ActionResult ExpectedVsActual(ProjectTotalsReportViewModel Model)
    {
        try
        {
            if (ModelState.IsValid)
            {

                ViewBag.InitialLoad = false;
                DataHelper.TimeFrame selectedTimeFrame = DataHelper.TimeFrame.Weekly;//Need to remove after adding selection for time frame

                SMCContext db = new SMCContext();
                ViewBag.TimeFrameSelectList = DataHelper.GetTimeFrameSelectList();
                List<ProjectTimeFrame> timeFrames = new List<ProjectTimeFrame>();
                ProjectViewModel Project = new ProjectViewModel();
                timeFrames = DataHelper.GetProjectTimeFrames(Model.StartDate.Value, Model.EndDate.Value, selectedTimeFrame);

                Project.EmployeeProjectRates = Project.EmployeeProjectRates.OrderBy(epr => epr.Employees.Single(e => e.Value == epr.EmployeeID.ToString())).ToList();



                    resultFile = currentPackage.GetAsByteArray();
                    return File(resultFile, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Expected Vs Actual.xlsx");

                }
                #endregion
            }
            else
            {
                return PartialView("_ExpectedVsActual", Model);
            }

        }
        catch (Exception e)
        {
            throw e;

        }







    }
public ActionResult ExpectedVsActual()
{
尝试
{
ProjectTotalsReportViewModel=新项目TotalsReportViewModel();
Employee currentUser=DataHelper.GetEmployee(用户,db);
model.AvailableEmployees=db.Employees.OrderBy(e=>e.LastName).ThenBy(e=>e.FirstName).ToList();
if(currentUser.SecurityRoleCode==Constants.SECURITY\u ROLE\u CODE\u ADMIN)
{
model.AvailableProjects=(db.Projects.Any()?db.Projects.Where(p=>p.ProjectCategoryCode==Constants.PROJECT\u CATEGORY\u DIRECT).OrderBy(p=>p.ProjectName).Distinct().ToList():new List());
model.ProjectRate=(db.EmployeeProjectRates.Any()?db.EmployeeProjectRates.Where(epr=>epr.EmployeeID==epr.EmployeeID).OrderBy(epr=>epr.EmployeeID.Distinct().ToList():new List());
}
其他的
{
model.AvailableProjects=(db.EmployeeProjectRates.Any(epr=>epr.EmployeeID==currentUser.EmployeeID&&epr.ProjectRoleCode==Constants.PROJECT\u ROLE\u PROJECT\u MANAGER)?db.EmployeeProjectRates.Where(epr=>epr.EmployeeID==currentUser.EmployeeID&&epr.ProjectRoleCode==Constants.projects.PROJECT\u rolecode==Constants.PROJECT\u PROJECT\u PROJECT\u MANAGER==Constants(p=>p.ProjectName).Distinct().ToList():new List());
}
model.SelectedEmployeesForCheckBox=model.AvailableEmployees;
model.SelectedProjectsForCheckBox=model.AvailableProjects;
ViewBag.InitialLoad=true;
返回PartialView(“_ExpectedVsActual”,model);
}
抓住
{
返回null;
}
}
[HttpPost]
公共行动结果ExpectedVsActual(ProjectTotalsReportViewModel模型)
{
尝试
{
if(ModelState.IsValid)
{
ViewBag.InitialLoad=false;
DataHelper.TimeFrame selectedTimeFrame=DataHelper.TimeFrame.Weekly;//添加时间范围选择后需要删除
SMCContext db=新SMCContext();
ViewBag.TimeFrameSelectList=DataHelper.GetTimeFrameSelectList();
列表时间范围=新列表();
ProjectViewModel项目=新的ProjectViewModel();
timeFrames=DataHelper.GetProjectTimeFrames(Model.StartDate.Value、Model.EndDate.Value、selectedTimeFrame);
Project.EmployeeProjectRates=Project.EmployeeProjectRates.OrderBy(epr=>epr.Employees.Single(e=>e.Value==epr.EmployeeID.ToString()).ToList();
resultFile=currentPackage.GetAsByteArray();
返回文件(resultFile,“application/vnd.openxmlformats of icedocument.spreadsheetml.sheet”,“Expected Vs Actual.xlsx”);
}
#端区
}
其他的
{
返回PartialView(“_ExpectedVsActual”,Model);
}
}
捕获(例外e)
{
投掷e;
}
}
我遗漏了文件的大部分格式化和创建,它与空结果无关

您至少在以下三点中的一点失败:

  • 验证数据库中的数据是否反映您正在搜索的内容。最快的方法是使用某种探查器,该探查器可以在转换EF查询时捕获并向您显示SQL语句。这是一个很好的工具

  • 验证您的映射。您可能没有正确映射您的关系,因此无法生成任何数据

  • 验证您自己的约束。看起来您有基于权限的查找。在获取当前用户后放置一个断点,并确保其具有与您在条件中查找的权限相匹配的权限(
    常量。安全性\u角色\u代码\u管理员


  • 您是否已尝试启用Sql Server探查器并查看EF发送到数据库的查询?