如何创建通用数据访问类?

ASP.net C#3.5 Framework,目前在Visual Studio 2008中工作。

我想要的是通用数据访问类。 我已经看过其中的几个,但我想要的是看到一个我传递连接字符串和SQL语句,它将返回一个对象列表或当只有一个项目的对象或没有响应需要一个布尔让我知道如果成功了?

如果不让我知道,我希望这是有道理的,我会解释更多。

看看我对这个问题的回答:

SQL Server最快的插入,更新和选择方法

它不是一个完整的类,但它为一个很好的通用实现奠定了基础,它将与linq-to-objects一起使用。

你不必自己动手。 看看Microsoft.Data.dll。 它介于低级ADO.NET代码(使用SqlConnection,SqlCommand等)和更高级别的ORM框架(如LINQ to SQL或nHibernate)之间:

Microsoft.Data.dll简介

然后您的访问变得如此简单:

var db = Database.OpenConnectionString(connString); for(var user in db.Query("select * from users")) { var username = user.Username; // Do other stuff here } 

您是否看过LINQ-to-SQL (不会推荐这个,但未来不会引起Microsoft的太多关注), LINQ-to-Entities (这就是微软为这个领域投入资源的原因)可预见的未来),NHibernate,或.NET的任何其他ORM(-ish)库 ?

其中任何一个都有机制允许您创建查询(以更加类型安全的方式,我可能会添加)并以对象forms返回结果(如果您处理标量结果,则从程序中获取结果)。

现在,它是不允许你传递查询字符串的情况,但是如果你动态生成它,那么通常情况下,这是一件非常糟糕的事情,因为大多数组成的动态SQL语句,如果不使用参数(你没有表明你是)受到SQL注入攻击。

使用上面的任何库时,您可以编写查询,并且将解析参数,并且将安全地生成封面下的动态sql,而不受SQL注入攻击。