我应该使用一个静态的DbUtil类为web,它是危险的吗?
问题描述:
是确定在网络使用这样的: (我的应用程序是asp.net的MVC)我应该使用一个静态的DbUtil类为web,它是危险的吗?
public static class DbUtil
{
public static int Insert(object o, string cs)
{
using (var conn = new SqlConnection(cs))
using (var cmd = conn.CreateCommand())
{
...
conn.Open();
return Convert.ToInt32(cmd.ExecuteScalar());
}
}
}
用法:
public class Repository<T> : IRepository<T>
{
public virtual int Insert(T o)
{
return DbUtil.Insert(o, Cs);
}
}
,并在服务或控制器构造注射后
public MyController(
IRepository<Organization> organizationRepository)
{
this.organizationRepository = organizationRepository;
}
答
正如你所写的,你的静态方法没有并发性问题,因为它不会对任何共享数据进行操作,并且每个调用都会实例化它自己的本地连接和命令对象。
然而,从静态方法看,你并没有真正获得太多的东西。一般来说,你应该比静态方法更喜欢实例方法,因为静态方法调用在测试过程中不能被模拟出来。
这完全取决于你如何调用这个方法。你能给我们举例说明它的用法吗?否则,不可能说任何有用的事情。 – Steven 2010-10-04 13:06:20
@Steven我编辑了我的问题 – Omu 2010-10-04 13:11:29