ASP.Net 中数据访问层的静态方法
Static Methods for Data Access Layer in ASP.Net
在编写数据访问层代码时,我创建了两组 classes,一组用于数据实体,一组用于 CRUD 操作,每当我使用第二组中的 class 时,我class 在使用它的任何方法之前的实例,
这些 CRUD classes 没有任何成员,它们只有方法和函数。
考虑到该应用程序是 Web 应用程序,我的问题是,在 CRUD classes 中将这些 methods/functions 实现为静态是否好?
因为没有成员,只是用来进行数据库操作,所以在多个用户同时使用的时候,会不会还是会冲突,或者会不会有其他问题?
Might they still conflict when used by several users at the same time or there could be any other problem?
不,每个方法调用都在其自己的堆栈上运行。对同一个静态方法的多次调用不会相互影响(只要您不访问其中的静态字段,或调用其他静态方法)。参见 Are static methods thread safe。
但是,您可能希望尽可能避免使用静态。例如,它会积极损害可测试性。参见 When to use static classes in C#。
在编写数据访问层代码时,我创建了两组 classes,一组用于数据实体,一组用于 CRUD 操作,每当我使用第二组中的 class 时,我class 在使用它的任何方法之前的实例, 这些 CRUD classes 没有任何成员,它们只有方法和函数。
考虑到该应用程序是 Web 应用程序,我的问题是,在 CRUD classes 中将这些 methods/functions 实现为静态是否好?
因为没有成员,只是用来进行数据库操作,所以在多个用户同时使用的时候,会不会还是会冲突,或者会不会有其他问题?
Might they still conflict when used by several users at the same time or there could be any other problem?
不,每个方法调用都在其自己的堆栈上运行。对同一个静态方法的多次调用不会相互影响(只要您不访问其中的静态字段,或调用其他静态方法)。参见 Are static methods thread safe。
但是,您可能希望尽可能避免使用静态。例如,它会积极损害可测试性。参见 When to use static classes in C#。