0

这里是 .NET 数据应用程序的新手,来自 Visual Foxpro 背景。

我正在计划一个 ASP.NET 和/或 Silverlight UI,也许还有一些 WPF 客户端的东西也在我们的 LAN 上,所以我想制作一个可以支持所有这些前端的数据访问层。

我的数据将在 SQL Server 中。我已经进行了将数据从 Foxpro 推送到 SQL Server 2005 的测试运行。它运行良好。这给了我一个可以使用的 SQL 服务器数据存储。

现在,这里是我迄今为止使用的数据工具,试图熟悉 .NET 数据访问:

  1. 我玩过 Linq-To-Sql,并使用 L2S 中的类型化对象和集合制作了一个测试表单,然后填充了一些 WPF 列表视图和其他 UI 控件。那很酷。林克很酷!WPF 很酷。请参阅此处的表格截图:http: //twitpic.com/26w26/full

  2. 我玩过我猜你会称之为经典 ADO.Net 数据集的东西。伙计,数据集似乎需要做很多工作...... SQLConncetion 一个 SQLCommand 一个 DataSet 一个 TableAdapter

...最糟糕的是,我必须在引号内键入 SQL 代码,而 IDE 完全没有帮助来防止我输入错误,或者只编写简单错误的 SQL 代码,而且我必须知道来自我的数据表每次。错误的空间很大!和查询参数,呸。

那么,让我问一下…….NET 开发人员社区真的使用 SQLCmds、DataSets 和 DataTables 来读取和写入数据吗?它是这样工作的吗?

我知道所有关于 O/RM 之争的事情,还有 EF。

看起来您可以将任何 UI 控件从 ASP.NET/Silverlight/WPF/和 WinForms 连接到对象集合(通过 OR/M)或 DataSets/DataTables,对吗?它总是在这两者之一之间进行选择吗?

所以,现在是我做决定的时候了,但是,我不知道如何选择。它们似乎都可以工作,但是那个该死的 DataSet 东西对我来说似乎很可怕,但是,不知何故,它似​​乎也很常用。

4

4 回答 4

2

首先,将数据获取到 SilverLight 的唯一方法是通过 WCF Web 服务。Silverlight 中不允许直接访问数据库(毕竟您是在浏览器中运行)

第二:(我会对此表示反对)数据集是邪恶的。直接生成恶魔。不惜一切代价避免,除非有人拿着枪指着你的头。问题之一是性能:没有。问题二是数据消耗:1k自动变成3k。对于桌面应用程序来说不是什么大问题,但对于 Web 应用程序来说却是个大问题。

第三:了解创建领域对象的含义。从那里您可以使用 EF 或 NHibernate。我更喜欢 NHibernate,但有一个学习曲线。一旦你有了一个好的域对象,你就可以将它传递给你列出的任何客户端。

于 2009-03-17T20:00:12.340 回答
1

我已经使用经典的旧 ADO.NET 很多年了,你只是习惯了它。对于更大的应用程序,您可以花一些时间创建一次数据层,然后将其与许多其他业务对象一起使用。

其他几个选项:

  1. 强类型数据集。您可以创建一个强类型数据集,该数据集允许您拖放数据库对象并为您生成大量管道代码。

2 linq To Sql 设计器,它还允许您将对象拖放到设计器中,并生成用于连接和操作数据的 dbml 文件。

我最近加入了 Linq 潮流,当将数据视为对象时,它确实简化了您的生活。

祝你好运!

于 2009-03-17T19:52:46.993 回答
0

ADO.NET “Classic”(DataSet/DataTable API)没有任何问题,至少有一次,我决定使用它而不是 ORM。话虽如此,更经常使用 ADO.NET“经典”这一事实在很大程度上是历史的产物。长期以来,这是唯一可行的选择,尤其是如果您想坚持使用仅限 Microsoft 的解决方案。

于 2009-03-17T19:45:19.147 回答
0

使用数据集的人实际上使用 IDE 来创建强类型数据集。

使用它,您将拥有一个类似于 SQL Management Studio 的查询构建器的可视化查询构建器。这会生成带有参数的加载/保存等功能。

随处可见数据集的事实很大程度上是因为它是迄今为止唯一可用的解决方案,没有随处可见的手工编写 SQL。

如今,ORM 风靡一时,它们确实提供了一个非常好的抽象层。

于 2009-03-17T19:50:01.070 回答