Entity framework 使用实体框架的报告服务

Entity framework 使用实体框架的报告服务,entity-framework,reporting-services,ado.net,datatable,dataset,Entity Framework,Reporting Services,Ado.net,Datatable,Dataset,我有使用ado.net数据集开发报告(SSR)的经验。现在我正在开发一个应用程序,它不使用ADO.net,但使用实体框架,但实体框架不返回datatable或dataset。我想知道 在reporting services中是否有任何方法可以使用实体框架返回的集合或自定义对象 实体框架以某种方式返回数据表或数据集 或者我应该从entity framework返回的集合中手动创建datatable/dataset 作为记录,我通过从实体框架执行存储过程来获得resultset public voi

我有使用ado.net数据集开发报告(SSR)的经验。现在我正在开发一个应用程序,它不使用ADO.net,但使用实体框架,但实体框架不返回datatable或dataset。我想知道

  • 在reporting services中是否有任何方法可以使用实体框架返回的集合或自定义对象
  • 实体框架以某种方式返回数据表或数据集
  • 或者我应该从entity framework返回的集合中手动创建datatable/dataset

    作为记录,我通过从实体框架执行存储过程来获得resultset

    public void getMyReportData() 
    { 
         using (myEntityDataModel v = new myEntityDataModel()) 
         {
    
             var reportQuery = (from r in v.myTable
                                   select new
                                   {
                                       l.ID,
                                       l.LeaveApplicationDate,
                                       l.EmployeeNumber,
                                       l.EmployeeName,
                                       l.StartDate,
                                       l.Col1,
                                       l.Col2,
                                       .......,
                                       .......,
                                       l.Address
                                   }).ToList();
    
            reportViewer1.LocalReport.DataSources.Clear();
            ReportDataSource datasource = new ReportDataSource("nameOfReportDataset", reportQuery);
            reportViewer1.LocalReport.DataSources.Add(datasource);
    
            Stream rpt = loadEmbededReportDefinition("Report1.rdlc");
            reportViewer1.LocalReport.LoadReportDefinition(rpt);
            reportViewer1.RefreshReport();
    
            //Another way of setting the reportViewer report source
    
            string exeFolder = Path.GetDirectoryName(Application.ExecutablePath);
            string reportPath = Path.Combine(exeFolder, @"rdlcReports\Report1.rdlc");
            reportViewer1.LocalReport.ReportPath = reportPath;
    
            reportParameter p = new ReportParameter("DeptID", deptID.ToString());
            reportViewer1.LocalReport.SetParameters(new[] { p });
    
        }
    }
    
    
    
    
    public static Stream loadEmbededReportDefinition(string reportName)
        {
            Assembly _assembly = Assembly.GetExecutingAssembly();
            Stream _reportStream = _assembly.GetManifestResourceStream("ProjectNamespace.rdlcReportsFolder." + reportName);
    
            return _reportStream;
        }
    

    原始资料来源:

    你看过这个问题的答案了吗?