这是我使用 VS 2012 Ultimate 设置的解决方案:
我有一个项目(例如 MyDomainModel),其中包含使用 POCO 类的所有业务领域类型。我有另一个引用 MyDomainModel 项目的项目(例如 MyEntity),并且派生的 DbContext 类(例如 MyDbContext)在 SaveChanges 方法中实现自定义业务逻辑(例如,用于插入和修改数据时的自动时间戳)。
我有另一个基于 mstest 的项目(例如 MyEntity_Tests),它将使用已知的种子数据测试派生的 DbContext(例如 MyDbContext),作为数据库初始化的一部分。
我的问题是在调试测试时,MyDbContext的c#代码上设置的断点没有命中。但是,如果我在文件中放入诸如 Debug.Print("xxx") 之类的行并调试相同的测试,则测试输出将包含那些预期的输出“xxx”。
我知道实体框架运行时会在后台生成代理 dll 来包装这些 dll(例如 MyDomainModel.dll)。但是,无法像在 MyDbContext 中那样调试我自己的代码对我来说确实是一个大问题。其他人在使用 EF 代码优先时是否有类似的问题以及如何解决这个问题?