2013-06-18 117 views
6

我正在玩類型提供程序,特別是sql實體框架類型提供程序。 我正在寫一個有很多對象的數據庫的測試,而且它很遠,所以連接速度有點慢。每次我構建項目時,都需要很長時間,完成構建需要好幾分鐘。F#類型提供程序非常非常緩慢構建

我在想什麼編譯器不緩存類型信息?

P.S. F#交互式會更糟......

+0

你基準有什麼樣你認爲這是慢?你有什麼比較點?我的意思是,你是否嘗試過針對不同後端的Type Providers?投票結束,因爲這是一個過於寬泛的問題。 –

+1

每次需要幾分鐘的構建需要太長時間...即時比較每個構建。 –

+0

每次需要幾分鐘的構建?我曾經在一個商業C++應用程序上工作,每次構建它時都需要花費1/2小時來構建,而這是經過幾輪優化後的結果。除非您每次都在構建玩具代碼,否則編譯需要一些時間。說「太慢了」有點像最終用戶說「這太難用了」 - 模糊而漂亮無用。 –

回答

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文件)。

在將所有類型的提供程序代碼移動到單獨的項目之後,構建明顯更快!

注:加載互動更是快,只有你有將引用添加到DLL的各類