【问题标题】:Entity Framework 4: Can I handle exception at context level实体框架 4:我可以在上下文级别处理异常吗
【发布时间】:2014-07-22 13:33:58
【问题描述】:

我想处理一个非常具体的 EF 异常:转换溢出。 我想知道是否可以配置上下文以在发生此特定异常时执行预定义的代码块\方法。

如果可以在上下文中处理未处理的 ef 异常,这对我也有好处,因为我将能够调查异常内容并根据需要做出响应。

提前致谢!

【问题讨论】:

  • 您可以使用 log4net 或 elmah 记录错误,然后您可以检查实际错误所在。
  • 我想做一些针对这个异常的事情。 log4net 和 elmah 在我看来是一个更通用的解决方案
  • 我们使用 log4net。我们只使用它来记录消息和错误。如果您想对异常做其他事情,那不是解决方案。

标签: c# entity-framework entity-framework-4


【解决方案1】:

我不会将错误处理放在上下文对象中。我倾向于将该代码放置在我的表示层中,尽管它放置在存储库层中,具体取决于您要对异常执行的操作。每次您从数据库更新模型时,为每个实体类和函数导入发出的代码都会重新生成,从而消除您对它们所做的任何更改。

但上下文类本身是一个部分,因此您可以将具有该类的另一个部分定义的文件添加到您的项目中,并在其中定义一个您在 catch 块中调用的方法。

【讨论】:

  • db 手动创建,实体使用数据注释链接到表。您的评论仍然与此架构相关吗?
  • 我从来没有使用过代码优先EF,所以我无法回答你的问题,但我认为我在答案中提出的建议仍然是很好的做法,即便如此。在我的代码中,我在另一个类中有一个方法,该方法由表示层中的每个 catch 块调用,因为我想要对异常执行的操作只能在表示层中完成。
  • 我已经在使用 log4net,所以会记录这个异常。我想知道我是否可以像问题中提到的那样处理它。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多