执行一组数据库查询

时间:2012-11-28 11:02:19

标签: c# database asynchronous thread-safety

我有以下任务要完成:

在我的程序中,有一个数据库查询或问题块。 我想执行这些问题并等待所有问题的结果,或者如果一个问题失败就会收到错误!

我的问题对象看起来像这样(简化):

public class DbQuestion(String sql)
{
    [...]
}

[...]

//The answer is just a holder for custom data...
public void SetAnswer(DbAnswer answer)
{
    //Store the answer in the question and fire a event to the listeners
    this.OnAnswered(EventArgs.Empty);
}

[...]

public void SetError()
{
    //Signal an Error in this query!
    this.OnError(EventArgs.Empty);
}

因此,向数据库发出的每个问题都有一个等待解析结果的侦听器。

现在我想解决与数据库异步的一些问题(最多5个左右)并使用所有问题的数据触发事件,如果只有一个问题抛出错误,则触发错误!

哪个是完成此任务的最佳或最佳方法? 我可以真正执行一个并行的问题并在一个问题抛出错误时停止我的所有工作吗?

我想我需要一些灵感...

请注意:我正在使用.NET framework 2.0

1 个答案:

答案 0 :(得分:0)

查看transactions。在一个事务中包含对数据库的调用,并在结束时提交或在失败时回滚。