数据访问层新手

时间:2009-03-17 19:38:32

标签: .net linq-to-sql dataset data-access-layer

此处有来自Visual Foxpro背景的.NET数据应用新手。

我正计划使用ASP.NET和/或Silverlight UI,也可能在我们的局域网上使用一些WPF客户端,所以我想制作一个可以支持所有这些前端的数据访问层。

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

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

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

  2. 我玩过我猜你称之为经典的ADO.Net DataSet。男人,DataSet似乎很多工作...... SQLConncetion SQLCommand 一个DataSet 一个TableAdapter

  3. ...最糟糕的是,我不得不在引号内键入SQL代码,完全没有IDE帮助阻止我输入错误,或者只编写错误的SQL代码,我不得不知道每次都从我的数据表中列出名称。有很多错误的余地!和查询参数,你好。

    那么,让我问一下...... .NET开发人员社区是否真的可以使用SQLCmds,DataSet和DataTable来读写数据?那是怎么回事?

    我知道那里的O / RM战斗,以及EF。

    看起来你可以将ASP.NET / Silverlight / WPF /和WinForms中的任何UI控件连接到Object集合(通过OR / M)或DataSet / DataTables,对吧?它总是在这两者中的一个之间做出选择吗?

    所以,这是我的决定时间,但是,我不知道如何选择。它们似乎都可以工作,但是那个糟糕的DataSet对我来说似乎很可怕,但不知何故,它似​​乎也常用。

4 个答案:

答案 0 :(得分:2)

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

第二:(我会为此采取行动)DataSet是邪恶的。直接产生魔鬼。除非有人拿着枪对准你,否则不惜一切代价。问题一是表现:没有。问题二是数据消耗:1k自动变为3k。对于桌面应用程序来说,这不是一个大问题,但对于Web应用程序来说却是一个巨大的问

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

答案 1 :(得分:1)

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

其他几个选项:

  1. 强类型数据集。您可以创建一个强类型数据集,它允许您拖放数据库对象,并为您生成许多管道代码。
  2. 2 linq To Sql designer,它还允许您将对象拖放到设计器中,并生成用于连接和操作数据的dbml文件。

    我最近加入了Linq的行列,它确实简化了将数据视为对象的生活。

    祝你好运!

答案 2 :(得分:0)

ADO.NET“Classic”(DataSet / DataTable API)没有任何问题,至少有一次,我决定使用它而不是ORM。话虽如此,ADO.NET“经典”更经常使用的事实在很大程度上是历史的工件。很长一段时间,这是唯一可行的选择,特别是如果你想坚持使用仅限微软的解决方案。

答案 3 :(得分:0)

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

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

你到处看到数据集这一事实很大程度上是因为它是迄今为止唯一可用的解决方案,而不是在任何地方手工编写SQL。

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