使用实体框架在ASP.Net中创建报表

我们正在寻找添加微软报告-SSR到我们的内部网站之一

数据库已安装所有报告功能

该网站对所有数据使用实体框架4

我已经能够使用创建数据集(*.XSD)的老式方法创建报告,而且效果很好

但我的问题是,是否可以利用现场现有实体框架获取报告所需的数据?而不必重新发明轮子,制作一个完整的数据集以及关系等

这是一个网站,不是应用程序,所以(http://weblogs.asp.net/rajbk/archive/2010/05/09/creating-an-asp-net-report-using-visual-studio-2010-part-1.aspx)似乎不适用;我没有看到数据源(在本教程的第2部分中)

更新

作为补充说明,我们希望避免昂贵的第三方控制等

另外,看待这个问题的另一种方法可能是从实体框架实体模型生成*.XSD;这可能吗?但这并不理想,因为它会让我们启动并运行

下面是我如何在一个.NET winForms应用程序中设置报表数据源的快速示例

public void getMyReportData()
{
使用(myEntityDataModel v=new myEntityDataModel())
{
var reportQuery=(来自v.myTable中的r)
选择新的
{
l、 身份证,
l、 叶酸盐,
l、 雇员人数,
l、 雇员姓名,
l、 开始日期,
l、 结束日期,
l、 主管,
l、 部门,
l、 Col1,
l、 Col2,
.......,
.......,
l、 地址
}).ToList();
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource datasource=新的ReportDataSource(“ReportDataSet的名称”,reportQuery);
reportViewer1.LocalReport.DataSources.Add(datasource);
流rpt=LoadEmbeddedReportDefinition(“Report1.rdlc”);
reportViewer1.LocalReport.LoadReportDefinition(rpt);
reportViewer1.RefreshReport();
//设置reportViewer报告源的另一种方法
字符串exeFolder=Path.GetDirectoryName(Application.ExecutablePath);
字符串reportPath=Path.Combine(exeFolder,@“rdlcReports\Report1.rdlc”);
reportViewer1.LocalReport.ReportPath=ReportPath;
reportParameter p=新的reportParameter(“DeptID”,DeptID.ToString());
reportViewer1.LocalReport.SetParameters(新[]{p});
}
}
公共静态流LoadEmbeddedReportDefinition(字符串reportName)
{
Assembly _Assembly=Assembly.getExecutionGassembly();
Stream _reportStream=_assembly.GetManifestResourceStream(“ProjectNamespace.rdlcReportsFolder.+reportName”);
返回报告流;
}

发表评论