抛出异常后使用objectContext

时间:2009-12-29 12:50:52

标签: .net entity-framework

请参阅此方案:

1 - 我在多个业务逻辑层类之间共享一个ObjectContext实例,以避免在使用多个对象上下文时出现身份和跟踪问题。

2 - 类的对象尝试创建并插入实体,但会发生异常(由于外键约束,唯一键约束或任何其他原因)。

3 - 另一个类的另一个对象尝试插入另一个没有问题的实体。

这里抛出异常,因为ObjectContext实例仍在跟踪第一个对象,并在调用SaveChanges()时再次尝试插入它。

我知道一个解决方案是在发生异常时解除导致异常的对象,但我想防止编写错误代码的开发人员影响应用程序中其他类的行为的情况。

有任何线索吗?

1 个答案:

答案 0 :(得分:2)

听起来好像你将ObjectContexts保持了很长时间,并在多个工作单元中使用它们。这些长寿命将精确地介绍您描述的各种问题。解决问题的一种可能方法是在操作失败时处理ObjectContext,并为下一个操作实例化一个新的ObjectContext。请注意,我不建议同时在应用程序中使用多个ObjectContexts。很难说你的应用程序应该如何构建而不会看到它,但是你描述的症状表明试图同时使用相同的ObjectContext进行太多的事情。

相关问题