报表设计器支持 ORM (.NET)
Posted
技术标签:
【中文标题】报表设计器支持 ORM (.NET)【英文标题】:Report-Designer support for ORM (.NET) 【发布时间】:2009-03-25 14:21:20 【问题描述】:假设我有一个使用 ORM(我正在考虑 nHibernate 或 LINQ to Entities)进行数据访问的应用程序。如何为我的用户提供针对我的对象属性进行报告的能力?我认识的所有最终用户报表设计者都直接与数据库对话,但我不喜欢在已经存在于应用程序对象中的报表中重复逻辑。
还有标准的解决方案吗?
我希望有一个系统使用反射(或其他方法)从我的对象中获取架构,然后让用户构建一个可以针对我提供的 IQueryable 运行的 linq 查询。
必须自己编写所有数据检索逻辑并不吸引人。创建数据集来表示我所有的对象就更不吸引人了。 (如果我喜欢数据集,我就不会关注 ORM 系统)
新的.NET RIA Services 是解决方案的良好基础吗?
【问题讨论】:
【参考方案1】:你也可以看看XtraReports from DevExpress
XtraReports 可以从任何实现 IList、ITypedList 或 IBindingList 接口的数据源生成报告。
【讨论】:
以这种方式使用其他 DevExpress 组件也取得了不错的效果。【参考方案2】:许多第 3 方报表设计器允许您从自己的数据源生成报表。例如。数据集、IList 等
他们似乎还没有让用户使用 Ling 类型查询等设计报告。
(如果有人提出更好的答案,我会删除这个答案并将更好的答案设置为预期答案。)
【讨论】:
【参考方案3】:您可以使用 s-s-rS 报告,但不能使用基于服务器的报告。我想他们称他们为本地报道。
在这种模式下,您将数据提供给报表,而不是让报表获取数据,因此从概念上讲,您将编写一个方法来将您的对象转换为数据集,然后将其传递到报表中。
【讨论】:
【参考方案4】:快来查看数据动态报告。我们允许您指定最终用户将在设计器中看到的数据集,但您可以从幕后的任意来源加载数据。事实上,我们为对象集合提供了特殊的数据源支持。以下是与您所追求的内容相关的几个截屏视频:
UserDesignerControl.LocateDataSource & Xml Data Provider Additions:这实际上是以 XML 为中心的演练,但请注意他们如何使用 LocateDataSource 按需提供数据,并且用户可以查看一个简单的数据集,而开发人员可以完全控制该数据集。由于我们有一个用于绑定到对象集合的 ObjectDataSource,因此您可以轻松地将相同的场景应用于绑定到对象。 Field Selector in Designer for End Users:这个展示了设计器中的一些字段选择器功能,您的最终用户可以使用这些功能来选择字段。所有其他截屏视频都在http://www.datadynamics.com/Products/DDRPT/#screencasts
这是"quick start article" on a blog (by an ActiveReports support team member) that shows how to use Linq with ActiveReports。
我们还有a knowledge base article on our website,它一步一步将一个linq 查询绑定到ActiveReports。
A customer has also written in detail how he uses ActiveReports with data from Linq in his applications here.
Scott Willeke
Data Dynamics / GrapeCity
【讨论】:
对于投反对票的人,我会很感激评论解释原因。我已经重新阅读了这个问题,并且尽我所能告诉我我的答案正确地回答了问题的症结“我如何为我的用户提供针对我的对象属性进行报告的能力?”。 另外,请注意,Data Dynamics Reports 和 ActiveReports 可以轻松全面地绑定到 Linq 查询结果。两者还允许您在设计时添加字段以将字段拖放到表面上,从而轻松设计绑定到 Linq 查询的报表。 .. 我同意 ActiveReports 对大多数应用程序来说都很棒,但由于答案的措辞,我投了反对票,因为它看起来更像是一个广告。 这个回复肯定不是“广告”。显然 - 正如我的签名中明确指出的 - 我为 GrapeCity 工作,但响应和过多的链接与问题相关,并发布以提供帮助。此外,由于接受此回复的问题所有者对他的问题有答案,我会说这显然是相关且适当的答案。以上是关于报表设计器支持 ORM (.NET)的主要内容,如果未能解决你的问题,请参考以下文章