为什么ASP.net一般的架构DA层(数据访问层)的方法不用静态的。

问题描述

用静态方法,不但代码简单明了,而且可以省下实例化一个类的时间。但是我发现大部分框架的操作数据库的DA层都不用静态方法,顶多就是一些Help之类的工具类用几个静态方法。(省内存空间?应该不是吧,不用静态方法那个类还是放在内存中的呀,而且实例化的类中还要专门开个空间来指向这个方法的地址。防并发?静态方法中只要不用到共用变量或静态字段应该没这个问题吧?)我写的DA层都用了静态方法,被技术总监骂的很惨,但是他也给不出理由。只好向大家求助。代码例子如下:例如BUAccount类定义静态方法publicstaticDataTableGet(BaseDBConnectionmyDBConnection,stringparamID)在页面中直接BUAccount.get(*,*)来获取一行记录,现在一定要改成publicDataTableGet(BaseDBConnectionmyDBConnection,stringparamID),在页面中先BUAccountmyAccount=newBUAccount();然后再myAccount.Get(*,*)来获取。

解决方案

解决方案二:
路过,顶一下
解决方案三:
先想想DA层对象有哪些特征...再看静态方法的定义...1.静态方法用于表示不会随对象状态而变化的计算,静态方法是不与类的特定实例相关联的方法...2.静态方法不具有对类的实例的访问权限...最后再想想你该不该被骂...
解决方案四:
2楼你想说的是什么?
解决方案五:
我怎么用的数据库操作类就都是静态的呢,不是本来就应该用静态的吗看看sqlhelp类,它里面的也是静态的呀,为什么不能用静态的。
解决方案六:
lz说的是实体类...说的是实体类的静态方法...回帖要看帖...简单的说吧...实体类就不应该有方法...
解决方案七:
1.静态方法,不会经过构造函数,所以你不能通过构造函数来初始参数,你只能通过传递参数,来初始他当你有多种参数需要传递的时候,你就要不断重载他了。当然你可以用参数型的类型,不过如果参数有一定结构,就很麻烦。2.静态方法,只能访问静态变量,而静态变量是不会随类状态而变化,所以会保留上一次记录,这样就会产生意外的结果3.静态方法依赖实在太强了,调用者必须很清楚的知道方法的内部实现,他才能调用正确的方法,并给出正确参数,这对调用者实在是个负担。4.静态类会保留大量无用的数据放在内存里。(就像上面说的他保留的上一次记录,这个上一次的数据对你来说根本就是无用的)
解决方案八:
是不是可以这样理解,classBU{publicstaticvoidget(){stringstr="xxx";}}用BU.get()的执行完后str内存中不销毁。而classBU{publicvoidget(){stringstr="xxx";}}用BUb=newBU();b.get()执行完后str内存中会销毁?
解决方案九:
静态方法是不会释放内存的,每次进来都占一块内存,很快你的程序就over啦
解决方案十:
你看微软企业库里数据访问都不用静态的方法.
解决方案十一:
MARK
解决方案十二:
学习了,我也也类似问题!

时间: 2024-12-31 20:17:23

为什么ASP.net一般的架构DA层(数据访问层)的方法不用静态的。的相关文章

ASP.NET2.0数据操作之创建数据访问层(1)

asp.net|创建|访问|数据 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇.我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的ASP.NET网页组成的表现层.在打下这个后端的基础工作之后,我们

在ASP.NET 2.0中操作数据之一:创建一个数据访问层_自学过程

导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇.我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的ASP.NET网页组成的表现层.在打下这个后端的基础工作之后,我们将开始转向报表,示范如何显示,汇总

ASP.NET2.0数据操作之创建数据访问层(2)

asp.net|创建|访问|数据 这最后一个复选框,"生成DB直接方法(GenerateDBDirectMethods)",如果选了的话,会为TableAdapter自动生 成Insert(),Update(),和Delete()方法.如果你不选这个选项 的话,所有的更新都需要通过TableAdapter唯一的Update()方法来实现,该方法接受一个强类型的DataSet,或者一个DataTable,或者单个DataRow,或者一个DataRow数组.(假如你 在图9所示的高级属性里

ASP.NET2.0数据操作之创建数据访问层(4)

asp.net|创建|访问|数据 第五步:完成数据访问层 注意,ProductsTableAdapters类从Products表中返回的 是CategoryID和SupplierID的值,但并不包括Categories表 的CategoryName字段和Suppliers表的CompanyName字段,尽管当 我们显示产品信息时,这些很可能是我们想要显示的字段.我们可以扩充TableAdapter的起始方 法GetProducts()来包含CategoryName和CompanyName字段的值

Scott Mitchell的ASP.NET 2.0数据教程之一 创建一个数据访问层

返回"ASP.NET 2.0数据教程目录" 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库 来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研 究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇 .我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的 DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL), 以及一个由共享页面布局的ASP.NET网页组成的表现层.在打

基于.NET平台的分层架构实战(九)—数据访问层的第三种实现:基于NBear框架

基于.NET平台的分层架构实战(九)-数据访问层的第三种实现:基于NBear框架的ORM实现 前面的文章讨论了使用SQL语句和存储过程两种数据访问层的实现方式,这一篇里,将讨论使用ORM方式实现数据访问层的方法. 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实

基于.NET平台的分层架构实战(八)—数据访问层的第二种实现:SQLServer+存储

基于.NET平台的分层架构实战(八)-数据访问层的第二种实现:SQLServer+存储过程 在上一篇中,讨论了使用SQL构建数据访问层的方法,并且针对的是Access数据库.而这一篇中,将要创建一个针对SQLServer数据库的数据访问层,并且配合存储过程实现. 曾经有朋友问我使用SQL和存储过程在效率上的差别,惭愧的是我对这方面没有研究,也没有实际做过测试.通过查阅资料,发现在一般情况下,存储过程的效率由于使用SQL,但是也不绝对,也发现有的朋友测试时发现在特定情况下SQL的效率优于存储过程,

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层

在上一篇中,我们已经搭建起了整个解决方案的项目,并且建好了数据库,完成了实体类和Nhibernate映射文件.在本文中,将定义数据访问接口,并利用Nhibernate实现接口,利用Spring.net配置起来dao.并对其进行单元测试. 数据访问层也和Petshop等框架一样,分为数据访问的接口以及实现,不过这里的数据访问实现相比之下就清晰和明显了的多,Nhibernate本身就是支持多数据库的,所以这样做不是为了多数据库,而是为了Nhibernate的可插拨,即使哪一天发现由于一些问题,比如说

ASP.NET 2.0实现数据访问层

1. 实现数据访问层 本节将讲解数据访问层的实现,该层包括与AdventureWorks数据库通信的所有必要类和方法.首先,使用Visual Studio 2005创建新的Visual C#类库项目AdventureWorksTraderDataAccess.当这个项目创建后,可修改默认类名称为ProductCategoryDB.示例1说明了ProductCategoryDB类的实现代码. 示例1:实现ProductCategoryDB类 using System; using System.D