2016-11-08 12 views
0

Telerik DataAccess ORMを使用している人の助けを募集しています。最近、null可能な外部キーで大きなパフォーマンスの問題が発生しました。Telerik DataAccess(OpenAccess)NULL可能な外部キーのパフォーマンス

ヌル化可能な外部キープロパティ(SaveChangesなし)に値を割り当てると、Telerikはデータベースへの呼び出しをいくつか行い、奇妙な作業を行います。私たちはdotTraceを使用して、多くのSQL DataReader呼び出しといくつかの奇妙な文字列/ DateTime/Enum/...コンバータがあることを発見しました。この問題は、値をプロパティに設定したときにのみ表示され、getは正常に機能しています。

私たちの環境についてちょっと。我々は、空のコンソールアプリケーションを作成しようとしました。同じ奇妙なコードが呼び出されますが、ローカル環境では非常に高速です - 小さなエンティティとローカルdbに対して〜60ms。大きなエンティティの場合は、〜1.5秒、ですが、Azure SQL DBを使用するプロダクションサーバーでは、10〜50秒ですです。

備考:外部キーを使用せずにオブジェクトを直接ロードして設定しようとしましたが、それは役に立ちません。

public class Entity 
{ 
    public int? ParentId { get; set; } // Wee see this issue when we set value to the ParentId or Parent property. SaveChanges is not called. 

    public Parent Parent { get; set; } 
} 

Here dotTraceコールスタックを見つけることができます。

答えて

0

最後に、私はこの問題を解決しました。私はを使用しているすべての人に、の設定を知らせる必要があります。 ParentIdまたはParentエンティティを設定するたびに、指定されたParentIdを持つすべての子がメモリにロードされます。 lazy-loadが有効になっていても

Telerikはこの動作を最適化できますが、下位互換性のために変更したくないことに同意します。

関連する問題