因为我想对我的代码进行单元测试,所以我在我的MVC4应用程序中实现了存储库模式。我设法制作了一个上下文接口(interface),一个伪造的上下文,并使用了一个伪造的System.Data.Entity.DbSet实现。通过关注this代码。不幸的是,就像我之前的两个发帖人(here和here)一样,我无法mockDbContext.Entrymethod。.我使用这种方法在我的代码中更新数据库条目,如下所示:DbContext.Entry(order).State=EntityState.Modified;我还没有找到解决这个问题的方法,只有那些说这样的话的人:"andwhatist
因为我想对我的代码进行单元测试,所以我在我的MVC4应用程序中实现了存储库模式。我设法制作了一个上下文接口(interface),一个伪造的上下文,并使用了一个伪造的System.Data.Entity.DbSet实现。通过关注this代码。不幸的是,就像我之前的两个发帖人(here和here)一样,我无法mockDbContext.Entrymethod。.我使用这种方法在我的代码中更新数据库条目,如下所示:DbContext.Entry(order).State=EntityState.Modified;我还没有找到解决这个问题的方法,只有那些说这样的话的人:"andwhatist
我有一个桌面客户端应用程序,它使用模态窗口来设置分层对象的属性。由于这是一个客户端应用程序并且对DbContext的访问不是线程化的,因此我在主窗体上使用了一个长时间运行的上下文,该上下文传递给模态子级。这些模态窗口使用PropertyGrid来显示实体属性,并且还有取消按钮。如果修改了任何数据并按下了取消按钮,则更改会反射(reflect)在父窗体中(我无法在其中处理DbContext对象)。如果未调用DbContext.SaveChanges()方法,是否可以放弃所做的任何更改?更新EntityFramework版本4.4。 最佳答案
我有一个桌面客户端应用程序,它使用模态窗口来设置分层对象的属性。由于这是一个客户端应用程序并且对DbContext的访问不是线程化的,因此我在主窗体上使用了一个长时间运行的上下文,该上下文传递给模态子级。这些模态窗口使用PropertyGrid来显示实体属性,并且还有取消按钮。如果修改了任何数据并按下了取消按钮,则更改会反射(reflect)在父窗体中(我无法在其中处理DbContext对象)。如果未调用DbContext.SaveChanges()方法,是否可以放弃所做的任何更改?更新EntityFramework版本4.4。 最佳答案
我想知道DbContext类是否是线程安全的,我假设它不是,因为我当前正在执行访问我应用程序中的DbContext的并行线程,并且我我收到大量锁定异常和其他看起来可能与线程相关的事情。直到最近我才没有收到任何错误...但直到最近我才访问线程中的DbContext。如果我是对的,人们会提出什么解决方案? 最佳答案 它不是线程安全的。只需在您的线程中创建一个新的DbContext实例即可。 关于c#-DbContext线程安全吗?,我们在StackOverflow上找到一个类似的问题:
我想知道DbContext类是否是线程安全的,我假设它不是,因为我当前正在执行访问我应用程序中的DbContext的并行线程,并且我我收到大量锁定异常和其他看起来可能与线程相关的事情。直到最近我才没有收到任何错误...但直到最近我才访问线程中的DbContext。如果我是对的,人们会提出什么解决方案? 最佳答案 它不是线程安全的。只需在您的线程中创建一个新的DbContext实例即可。 关于c#-DbContext线程安全吗?,我们在StackOverflow上找到一个类似的问题:
当我尝试将实体附加到上下文时出现异常AnobjectwiththesamekeyalreadyexistsintheObjectStateManager.TheObjectStateManagercannottrackmultipleobjectswiththesamekey这是预期的行为。但我想知道ObjectStateManager是如何知道的?我想先自己做这个检查 最佳答案 如果您正在使用DbContextAPI(您提到了ef-code-first),您可以简单地使用:context.YourEntities.Local.An
当我尝试将实体附加到上下文时出现异常AnobjectwiththesamekeyalreadyexistsintheObjectStateManager.TheObjectStateManagercannottrackmultipleobjectswiththesamekey这是预期的行为。但我想知道ObjectStateManager是如何知道的?我想先自己做这个检查 最佳答案 如果您正在使用DbContextAPI(您提到了ef-code-first),您可以简单地使用:context.YourEntities.Local.An
我正在寻找一种为DbContext设置CommandTimeout的方法。搜索后,我找到了将DbContext转换为ObjectContext并为objectContext的CommandTimeout属性设置值的方法。varobjectContext=(this.DbContextasIObjectContextAdapter).ObjectContext;但我必须使用DbContext。 最佳答案 它将适用于您的方法。或者子类化它(来自msdnforum)publicclassYourContext:DbContext{publ
我正在寻找一种为DbContext设置CommandTimeout的方法。搜索后,我找到了将DbContext转换为ObjectContext并为objectContext的CommandTimeout属性设置值的方法。varobjectContext=(this.DbContextasIObjectContextAdapter).ObjectContext;但我必须使用DbContext。 最佳答案 它将适用于您的方法。或者子类化它(来自msdnforum)publicclassYourContext:DbContext{publ