2011-02-11 315 views
1

我正在使用数据库来运行一些查询,并正在考虑优化一些东西。是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue线程安全吗?

我基本上是做两个静态对象

private static Database db = ... ; 
private static DbCommand cmd = db.GetSqlStringCommand("... where col = @colParam"); 
.... 
cmd.Prepare(); //one call 

然后想只是做:

db.AddInParameter(cmd, "colParam", DbType.String, "some value on each call") 

调用它时。

它只能工作一次。第一个电话后,我收到

变量名必须是批查询或存储过程

关于@colParam参数的错误消息中是唯一的。

所以我当时在每次调用一组替换加思考:

db.SetParameterValue(cmd, "colParam", "some value on each call") 

但是,这是安全的?我有这种感觉......?!?!?!?

线程安全吗只有一个命令对象可以在每个调用上设置值?如果两个用户同时设置价值会怎样?然后会发生什么?

回答