我一直在阅读 Julie Lerman 关于实体框架的书籍,但我遇到了一些障碍......
在第 66 页的“编程实体框架 DbContext”中,Julie 建议编写单元测试以确保正在创建动态代理,因为让实体框架创建更改跟踪代理的要求相当简单,但也很容易错过。
话虽如此,我还是按照 Julie 示例的一般结构为我的代码编写了以下测试:
[Test]
public void IsDynamicProxy()
{
using (var scienceFairToGoContext = new ScienceFairToGoContext())
{
var scienceFair = scienceFairToGoContext.ScienceFairs.Create();
Assert.IsTrue(scienceFair is IEntityWithChangeTracker);
}
}
当我将鼠标悬停在 scienceFair 对象上时,很明显它是一个更改跟踪代理
System.Data.Entity.DynamicProxies.ScienceFair_D3C57A2F699E75F716E63553D950EF7EC75F0C603F69093FCD78122CC0D6452C
...但是每当我运行单元测试时,它总是失败,因为“scienceFair is IEntityWithChangeTracker”总是评估为假。
似乎其他人也遇到了这个问题并将其发布到 O'Reilly 论坛,但似乎没有发布解决方案,我的 Google 搜索也没有返回任何类型的答案。
我目前正在使用 Visual Studio 2010、EF4、NUnit,并通过 ReSharper 运行我的测试。还值得一提的是,如果在一个简单的控制台应用程序中运行代码并对其进行调试,我会得到相同的结果。