【问题标题】:Is there a better alternative to Dataset in both WPF and Silverlight?WPF 和 Silverlight 中的 Dataset 是否有更好的替代方案?
【发布时间】:2010-08-12 01:59:47
【问题描述】:

我开发了 WPF / XAML 应用程序,这些应用程序调用从各种来源(SQL Server DB、Active Directory、Oracle DB、SAP RFC、XML 文件、平面文件等)检索数据的对象(函数或 Web 服务)。

这些对象总是返回数据集,然后绑定到数据网格以向用户显示信息,此外我还对数据集做了一些有趣的事情(连接表、检索元数据/结构、创建新列等)。

由于 WPF 是针对桌面的,在每台计算机上部署应用程序变得乏味且昂贵,因此我被敦促使用“Silverlight 业务应用程序”以便通过 Web 访问应用程序,并在不久的将来,轻松适应 Windows Phone 7。

从 WPF 迁移到 Silverlight 似乎很容易,但我遇到了一些问题,主要是在数据管理级别:Silverlight 不支持数据集。

我感到有点沮丧,因为我不得不复制我的所有函数/网络服务并修改它们以返回不同于数据集的对象。

但是,到目前为止,我找不到一个对象等于或优于一个数据集,顺便说一下,它也可以让我在 Silverlight 和 WPF 中互换使用它。

有没有人找到一个超越数据集提供的强大而方便的解决方案?如果是,请通过示例或链接告诉我以便学习。

谢谢!!

【问题讨论】:

  • 现在有比 DataSets 更好的选择。听起来您并没有花太多时间学习可用的东西。对 ORM、POCO 和泛型集合进行一些研究。您的 Web 服务等应该可能返回 IQueryable 或 IEnumerable 而不是 DataSet。
  • 迈克尔,我真的很感谢你的指示。我一直尝试使用安全且融合的技术来解决从不同来源(如上所述)检索数据的问题,而 Datasets 是作为中介的一个很好的选择(4 年前),直到我遇到了 SL 的问题。您是否知道一个网站,您在该网站上真正学到了很多关于应用于不同来源数据恢复的 ORM、POCO 或 IQueryable/IEnumerable 的知识?

标签: wpf silverlight-4.0 dataset


【解决方案1】:

如果您的最终用户都使用 Windows 并且在同一个网络上,那么您最好坚持使用 WPF 并使用ClickOnce。我碰巧同时喜欢 WPF 和 Silverlight,但是当涉及到人们认为理所当然的事情(例如文件关联、多个窗口、与其他应用程序集成等)时,Silverlight 是个大坏蛋。

但要回答您的问题,您可能需要重新构建数据访问策略并使用 LINQ 和 WCF 数据服务之类的东西。 Visual Studio 中的工具支持将允许您生成根据您的数据库架构建模的类,并且您的 Silverlight/WPF UI 可以直接绑定到这些类。

this project on CodePlex 似乎具有 DataSet/DataTable 的最小实现,但老实说,我不建议坚持使用 DataSet。 Silverlight 不支持 DataSet 的原因是人们已经说过,开发人员已经拒绝了向导驱动的 DataSet 模型,转而支持更清洁、更灵活的 ORM(对象关系映射)技术,例如 nHibernate 或 LINQ。

【讨论】:

  • Silverlight 可以与 POCO 或任何 ORM 一起工作,无需 LinqToSql 或 WCF 数据服务。
  • 我并不是要暗示这些是唯一的选择。我说的是“类似”,最后确实提到了 nHibernate。
【解决方案2】:

我没有太多使用 Silverlight 的经验,但对于 WPF,我使用 Entity Framework(版本 4,.NET 3.5 附带的 EF 有点马马虎虎)非常成功。

一旦您定义了类并将它们映射到您的数据库表中,您就可以做各种需要数据集才能完成的事情。

例如:数据验证。在 Entity Framework 中,实体类是分部类,因此您可以在很大程度上自定义它们。我使用几个跟踪无效属性值的字典将我的验证代码放在那里。在这里和那里有一点 iDataErrorInfo,瞧,我可以轻松绑定数据验证,可以触发 UI 中的样式更改。

我还没有尝试过 NHibernate 或任何其他 ORM 工具。总有一天我会的,但现在我发现 EF 足以满足我的目的。易于理解,易于实现,大量自定义,可与 LINQ(LINQ to Entities)一起使用,并且与 WPF 配合得非常好。

【讨论】:

  • Cory,我真的很想了解有关 EF 4 的更多信息,我最近阅读了有关此问题的网站(包括 MS),但似乎所有写这篇文章的人都认为所有世界对 EF 4 了解很多。了解其背后的理念(包括“用例”)是多么重要。
  • windowsclient.net 对我来说很重要。有很多视频(我碰巧喜欢的不仅仅是文字,因为没有可以完全搞砸食谱的拼写错误)。在我开始在一些测试项目中实现 EF 之后,我也开始将它们迁移到 MVVM 设计。此外,O'Reily Programming Entity Framework reference 是一本值得阅读的好书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多