CRUD操作; 你告知插入,更新等是否进展顺利?

dan*_*ich 7 c#

我有一个简单的问题(我希望):)

在对数据执行CRUD操作时,我几乎总是使用void作为"返回"类型.

例如.考虑以下代码:

public void Insert(IAuctionItem item) {
    if (item == null) {
        AuctionLogger.LogException(new ArgumentNullException("item is null"));
    }

    _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item);
    _dataStore.DataContext.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

然后考虑这段代码:

public bool Insert(IAuctionItem item) {
    if (item == null) {
        AuctionLogger.LogException(new ArgumentNullException("item is null"));
    }

    _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item);
    _dataStore.DataContext.SubmitChanges();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

它实际上只取决于你是否应该通知插入的东西(并且进展顺利)?

Jus*_*ner 15

我通常选择那里的第一个选项.

鉴于您的代码,如果插入出现问题,则会抛出异常.

由于数据访问代码周围没有try/catch块,因此调用代码必须处理该异常...因此它将知道它是否以及为什么失败.如果您刚刚返回true/false,则调用代码将不知道为什么会出现故障(可能或可能不关心).