2013-06-18 15 views
6

Gram z dostawcami typów, szczególnie dostawcą struktury typu encji sql. Piszę testy przeciwko bazie danych, która ma wiele obiektów, i jest zdalna, więc połączenie jest trochę powolne. za każdym razem, gdy buduję projekt, zajmuje dużo czasu, kilka dobrych minut na ukończenie kompilacji.F # Typ Dostawcy bardzo powolna kompilacja

czego mi brakuje, dlaczego kompilator nie buforuje informacji o typie?

P.S. Jeszcze gorzej z F # interaktywnym ....

+0

Co benchmarkingu przeciwko, aby rozważyć ten jest powolny? Jaki jest twój punkt porównania? Mam na myśli, czy wypróbowałeś Dostawców Typów na innym zapleczu? Głosuj, aby zamknąć, ponieważ jest to zbyt szerokie pytanie. –

+1

Kompilacja, która zajmuje kilka minut za każdym razem trwa zbyt długo ... w porównaniu z każdą inną kompilacją. –

+0

Kompilacja, która zajmuje kilka minut za każdym razem? Pracowałem kiedyś nad komercyjną aplikacją C++, która trwała pół godziny, aby ją budować za każdym razem, gdy ją budowaliśmy - i to było po kilku rundach optymalizacji. Jeśli nie budujesz kodu zabawek za każdym razem, kompilacja zajmie trochę czasu. Mówienie "zbyt wolno" jest jak użytkownik końcowy, który mówi "jest zbyt trudne w użyciu" - niewyraźne i całkiem bezużyteczne. –

Odpowiedz

9

Spróbuj użyć atrybutu LocalSchemaFile dla dostawcy danych. Wskazuje to plik .csdl, który jest używany do generowania typów. Możesz zlecić dostawcy typów aktualizację tego pliku, ustawiając atrybut ForceUpdate na true. Aby uruchomić z buforowanego schematu, po prostu ustaw ForceUpdate na false. Oto, jak to zrobić z dostawcą SqlDataConnection, który jest bardzo podobny do dostawcy SqlEntityConnection.

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

Oprócz tego, co można zdefiniować jako „powolne kompilacji”, (jeśli jesteś w czerwonym zielonego rozwoju TDD kręgu, buduje szybko stają się powoli!), Przeniosłem mój typ klient kod usługodawcę odrębnym projektem. Już ustawiłem ForceUpdate na wartość false, ale nadal kompilacje były powolne (najwyraźniej nadal działało sprawdzanie tła wygenerowanych plików dbml, w moim przypadku faktycznie były to pliki wsdlschema).

Po przeniesieniu wszystkich kodów dostawcy typów do oddzielnych projektów, kompilacje były znacznie szybsze!

Uwaga: ładowanie interaktywny był jeszcze bardziej szybkie, tylko trzeba dodać odwołanie do biblioteki dll dla typów