处理linq到实体异常的最佳方法是什么?我可以使用try和catch块还是有更好的方法?
答案 0 :(得分:0)
我们使用了try块来保护我们免遭保存错误。
try{
using(Context context = new Context()){
Entity x = context.Entities.First();
x.ModifyMe = true;
context.SaveChanges();
}
}catch(UpdateException e){
//convert to friendly message
}
如果要捕获较低的异常,还会有OptimisticConcurrencyException
我们还采取了一些措施,将SaveChanges包装在一个名为protected save changes的扩展方法中。
public static class Extension{
public static List<Error> ProtectedSaveChanges(this ObjectContext context){
try{
context.SaveChanges();
}catch(UpdateException e ){
//Convert to freindly and return
}
}
}
不管你信不信,我们决定更进一步,并且有一个特殊的函数,它定义了如何将异常方法转换为更加用户友好的错误。如果你想要那个,请告诉我,我可以发帖。
至于另一种方式,我见过人们使用异常屏蔽(EL),但我不知道是否有任何内置的事件处理程序可以解决错误。