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

C# Linq中的最佳异常处理方法:,c#,linq,exception-handling,C#,Linq,Exception Handling,有人能推荐LINQ中最好的异常处理机制吗? 假设我有以下函数: public List<test_dataRange> GetDataRange() { testDataContext = new ParentDataContext(conn); List< test_dataRange > dataRange = (from pp in testDataContext. test_dataRanges

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

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查询运行得很好

var property = (from y in parentDataContext. QAProperties
                            where y.Id == qaProperty.Id
                            select y).FirstOrDefault();
但是,
FirstOrDefault
将返回符合条件的第一个对象,如果不存在,则返回null

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

 property.Height = qaProperty.Height;
 property.Caption = qaProperty.Caption;
 property.Width = qaProperty.Width;
 property.Length= qaProperty.Length;
这将引发异常,因为属性为
null

我无法从你的帖子中判断这是否可以接受。 (qaProperty.Id是否为null?是否为零?为什么找不到预期的属性?)

你有几个选择:

  • 当属性为null时,创建一个新属性并将其添加到事务中
  • 当属性为null时进行正常转义,并通知用户未找到该属性
  • 回滚是不必要的。实体框架在parentDataContext.SubmitChanges()之前失败已到达。如果成功调用了
    SubmitChanges
    ,则该工作单元中的所有记录都将被更新


    至于
    使用
    块,您可以在其中粘贴一个
    try-catch

    好的ol'try-catch有什么问题?我例外,特殊场景在林齐引用了链接,但在事务之前没有空检查。Rollback();有人能改进上面的功能吗?处理回滚怎么样?@NewBornDeveloper在文章底部看到我添加的内容。
     property.Height = qaProperty.Height;
     property.Caption = qaProperty.Caption;
     property.Width = qaProperty.Width;
     property.Length= qaProperty.Length;