Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在引发异常后使用objectContext_.net_Entity Framework - Fatal编程技术网

.net 在引发异常后使用objectContext

.net 在引发异常后使用objectContext,.net,entity-framework,.net,Entity Framework,请参见此场景: 1-我在多个业务逻辑层类之间共享一个ObjectContext实例,以避免在使用多个对象上下文时出现标识和跟踪问题 2-类的对象尝试创建和插入实体,但发生异常(由于外键约束、唯一键约束或任何其他原因) 3-另一个类的另一个对象尝试插入另一个没有问题的实体 这里会引发异常,因为ObjectContext实例仍在跟踪第一个对象,并在调用SaveChanges()时再次尝试插入它 我知道一种解决方案是在异常发生时取消附加导致异常的对象,但我希望防止开发人员编写错误代码影响应用程序中其他

请参见此场景:

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

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

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

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

我知道一种解决方案是在异常发生时取消附加导致异常的对象,但我希望防止开发人员编写错误代码影响应用程序中其他类的行为


有什么线索吗?

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

我同意这一点。。。我想你得重新考虑你的设计。