我们正在寻求将Microsoft Reports – SSRS添加到我们的内部网站之一。
该网站正在使用Entity Framework 4的所有数据。
我已经能够创建一个报表使用老式的方式创建一个DataSet(* .XSD),这很好。
我的问题是,是否可能利用现有的实体框架在网站的报告所需的数据?而不是必须重新发明轮子,并制作一个完整的DataSet,以及关系等。
这是一个网站,而不是应用程序,所以这(http://weblogs.asp.net/rajbk/archive/2010/05/09/creating-an-asp-net-report-using-visual-studio-2010-part-1.aspx)似乎不适用;我看不到DataSource(在教程的第2部分)
更新
作为旁注,我们希望避开昂贵的第三方控制等。
此外,另一种方式来看看这个问题可能是从实体框架实体模型生成* .XSD;这可能吗?这不是理想,虽然会让我们开始运行..
解决方法
下面是我如何在我的一个.NET winForms应用程序中设置报告数据源的快速示例。
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.EndDate,l.Supervisor,l.Department,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; }