2013-06-18 7 views
6

私はタイププロバイダ、特にSQLエンティティフレームワークタイププロバイダーで遊んでいます。 多くのオブジェクトを持つデータベースに対してテストを書いていますが、リモートで接続が少し遅くなります。私がプロジェクトをビルドするたびに、ビルドが完了するまでに数分かかります。F#タイププロバイダー非常に非常に遅いビルド

コンパイラがタイプ情報をキャッシュしないのはなぜですか?

P.S. F#インタラクティブでさらに悪いです...

+0

用のDLLへの参照を追加する必要がありますか?比較のポイントは何ですか?他のバックエンドに対してタイププロバイダを試してみましたか?これは過度に広い質問であるため、投票に近づいてください。 –

+1

毎回時間がかかるのに数分かかるビルド...他のすべてのビルドと比較しています。 –

+0

毎回数分かかるビルドですか?私はビルドするたびにビルドするのに1時間半かかる市販のC++アプリケーションで作業していました。これは数回の最適化を経た後でした。毎回おもちゃのコードを作成していない限り、コンパイルには時間がかかるでしょう。 「あまりにも遅い」と言っているのは、「あまりにも使いにくい」というエンドユーザーのようなものです。あいまいでかなり無駄です。 –

答えて

9

データプロバイダのLocalSchemaFile属性を使用してみてください。これは、型の生成に使用される.csdlファイルを示します。 ForceUpdate属性をtrueに設定することによって、タイププロバイダにこのファイルを更新させることができます。キャッシュされたスキーマから実行するには、単にForceUpdateをfalseに設定します。ここでは、SqlDataConnectionプロバイダを使用してこれを行う方法を説明します。これは、SqlEntityConnectionプロバイダに非常によく似ています。 「遅いビルド」と定義することができるもののほか

type schema = SqlDataConnection< LocalSchemaFile = "Schema.dbml", ForceUpdate = false, ConnectionString = @"Data Source=<insert your connection string here>" > 
0

、(あなたは赤、緑、TDD開発サークルにいる場合、すぐに遅くなるのビルドは!)、私は別のプロジェクトに私のクライアントタイプのプロバイダのコードを移動しました。私はすでにForceUpdateをfalseに設定していましたが、まだビルドは遅かったです(実際には、生成されたdbmlファイルのバックグラウンドチェックは、実際はwsdlschemaファイルで行われていました)。

タイププロバイダコードをすべて別のプロジェクトに移動した後、ビルドは大幅に高速化されました。

注:インタラクティブがさらに速かったロード、唯一のあなたは、あなたが、これが遅い考えることに対してベンチマークされているどのような種類の