2

私は Entity Framework に関する Julie Lerman の本に取り組んできましたが、やや問題が発生しました...

66 ページの「Entity Framework DbContext のプログラミング」で、Julie は動的プロキシが作成されていることを確認する単体テストを作成することを提案しています。これは、Entity Framework で変更追跡プロキシを作成するための要件は非常に単純ですが、見逃しやすいためです。

そうは言っても、ジュリーの例の一般的な構造に従って、コードの次のテストを作成しました。

[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」は常にfalseと評価されるため、単体テストを実行するたびに失敗します。

他の誰かもこの問題に遭遇し、O'Reilly フォーラムに投稿したようですが、投稿された解決策はないようです。また、私の Google 検索からも何らかの回答が返されません。

現在、Visual Studio 2010、EF4、NUnit を使用しており、ReSharper を通じてテストを実行しています。また、単純なコンソール アプリケーションでコードを実行してデバッグすると、同じ結果が得られることにも言及する価値があります。

4

2 に答える 2

1

実際、私は問題を理解したようです。Julie の本を読んでいるときに、すべてのエンティティを基本クラス ScienceFairToGoEntity から継承するのは良い考えだと思いました。

基本クラスにあった 4 つのプロパティ (InsertBy、InsertDate、UpdateBy、UpdateDate) を仮想としてマークするのを忘れたようです。そのため、動的プロキシは遅延読み込み/関係修正用であり、変更追跡用ではありませんでした。

于 2013-05-27T05:57:05.867 に答える