有人能推荐一下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中可以应用的最好的异常处理机制是什么?另外,对于那些带有事务的函数,最好的异常处理机制是什么,例如:
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();
}发布于 2012-11-01 22:05:43
我认为您的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时,创建一个新的属性并将其添加到transaction
回滚是不必要的。实体框架在到达parentDataContext.SubmitChanges();之前失败。如果成功调用了SubmitChanges,则该工作单元中的所有记录都将被更新。
至于using块,您可以在其中插入一个try-catch。
https://stackoverflow.com/questions/13177499
复制相似问题