首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linq中的最佳异常处理方法:

Linq中的最佳异常处理方法:
EN

Stack Overflow用户
提问于 2012-11-01 20:52:48
回答 1查看 230关注 0票数 3

有人能推荐一下LINQ中最好的异常处理机制吗?假设我有以下函数:

代码语言:javascript
运行
复制
public List<test_dataRange> GetDataRange()
{
    testDataContext = new ParentDataContext(conn);
    List< test_dataRange > dataRange = (from pp in testDataContext. test_dataRanges
                                                    select pp).ToList();

    return dataRange;
}

LINQ中可以应用的最好的异常处理机制是什么?另外,对于那些带有事务的函数,最好的异常处理机制是什么,例如:

代码语言:javascript
运行
复制
 public void UpdateQAProperty(Data_QAProperty qaProperty)
        {
            parentDataContext = new ParentDataContext(conn);
            DbTransaction dbTransaction = null;
            parentDataContext.Connection.Open();
            dbTransaction = masterDataContext.Connection.BeginTransaction();
            parentDataContext.Transaction = dbTransaction;
            var property = (from y in parentDataContext. QAProperties
                            where y.Id == qaProperty.Id
                            select y).FirstOrDefault();
            property.Height = qaProperty.Height;
            property.Caption = qaProperty.Caption;
            property.Width = qaProperty.Width;
            property.Length= qaProperty.Length;

            parentDataContext.SubmitChanges();
            dbTransaction.Commit();

        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 22:05:43

我认为您的linq查询运行得很好。

代码语言:javascript
运行
复制
var property = (from y in parentDataContext. QAProperties
                            where y.Id == qaProperty.Id
                            select y).FirstOrDefault();

但是,FirstOrDefault将返回满足条件的第一个对象,如果不存在,则返回null。

尽管属性可能为null,但您可以继续使用setter

代码语言:javascript
运行
复制
 property.Height = qaProperty.Height;
 property.Caption = qaProperty.Caption;
 property.Width = qaProperty.Width;
 property.Length= qaProperty.Length;

这将抛出一个异常,因为属性为null

我不能从你的帖子中看出这是否可以接受。( qaProperty.Id是否为空?是零吗?为什么找不到预期的属性?)

您有以下几种选择:

当属性为null时,创建一个新的属性并将其添加到transaction

  • Gracefully转义中,然后通知用户未找到属性

回滚是不必要的。实体框架在到达parentDataContext.SubmitChanges();之前失败。如果成功调用了SubmitChanges,则该工作单元中的所有记录都将被更新。

至于using块,您可以在其中插入一个try-catch

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13177499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档