【转载】.NET Framework 相关的指南──数据访问

1.总是使用强类型DataSet。避免直接使用ADO.NET

    评析:强类型DataSet是从DataSet类派生的类,除了有DataSet类的属性和方法外,还具有数据库中所有对应的对象的属性和信息,它可以提供以名字为索引的方法来直接访问表和列,使用强类型DataSet不仅可以提高代码的可读性,还可以利用编译器在编译时就检查出类型不匹配错误,可以提高代码的一致性、可读性和可维护性,从而避免使用ADO.NET中在运行才能检查出来的诸多错误。
2.当访问数据库的时候总是使用事务
a)总是使用企业服务或System.Transactions事务
b)不要使用ADO.NET事务by enlisting the database explicitly
3.总是将事务隔离级别(transaction isolation level)设定为Serializable。如果要设定为其它的级别,则需要有实际业务管理规则支持。
4.不要在Windows Form、ASP.NET Web Form或者Web Service程序中使用Data Source窗口来丢弃数据库连接,这样会使表现层与数据层耦合。
    评析:诚然,在Visual Studio.NET开发工具中使用拖放的方式,将数据库连接控件放在界面上是一件十分方便的事情,但是这种方法有很多的缺陷,比如连接串是固定不变的,空间的生存期是整个页面的生命期,每次post后还会生成相应的控件(大多数情况下,在post后,无需再次新建数据库连接)。此外,对分层的开发来讲,界面的改动比数据曾要相对频繁。因此,数据库连接融入用户界面中,导致整个应用程序的代码维护更加困难。
5.使用Windows身份认证,不要使用SQL Server认证
    评析:使用Windows设分认证,可以结合Windows服务器的强大的域管理机制,使得数据库管理和域管理紧密地结合在一起。Windows身份认证比SQL Server认证提供更多的特性,容易管理和使用。此外,在其连接串中也无需将密码以名闻形式放在其中。因此,除非是服务器不能访问域控制器的特殊情况,不然就应该使用Windows认证。
6.访问SQL Server的组件应当与发起调用的客户程序运行在不同的id之下。
    评析:这点是很明显的,不然的话,客户程序被修改的话,就很可能导致数据的紊乱。
7.总是使用高级的、类型安全的类来封装你的存储过程。只允许通过该类来访问存储过程。使用Visual Studio 2005中类型安全的数据适配器来尽可能自动完成这一工作。
8.避免在存储过程中加入逻辑。如果在存储过程中出现一个IF,那么你就犯错误了。
    评析:一般来讲,存储过程只是封装了数据库的访问,从逻辑的易变性来看,不应该将业务逻辑都封装到存储过程中,因为在程序运行中修改存储过程几乎是不现实的,将运行的参数传入存储过程中运算也会导致整个应用的性能下降。但是这并不代表在存储过程中不能出现IF,因为在数据层面的必要判断还是需要的,比如判断记录是否存在来决定是否是插入一条记录还是修改记录,将整个过程都封装到存储过程中是合理的。
posted @ 2009-05-23 09:23  行一山人  阅读(396)  评论(0编辑  收藏  举报