繁体   English   中英

数据访问层新手

[英]Data Access Layer newbie

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

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

我的数据将在 SQL 服务器中。 我已经进行了从 Foxpro 推送数据到 SQL Server 2005 的测试运行。它很顺利。 这给了我一个 SQL 服务器数据存储来玩。

现在,这里是我到目前为止玩过的数据工具,试图熟悉 .NET 数据访问:

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

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

...最糟糕的是,我不得不在引号内输入 SQL 代码,而 IDE 绝对没有帮助,以防止我输入错误,或者写完全错误的 Z9778840A0100CB30C5B30C98287674B我的数据表每次。 有很多错误空间和查询参数。 呸。

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

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

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

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

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

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

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

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

其他几个选项:

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

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

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

祝你好运!

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM