5

Pracuję z Code First Migrations (Entity Framework 4.3) i chcę uzyskać skompresowaną wersję binarną bieżącego modelu, dzięki czemu mogę ręcznie porównać go z najnowszym modelem przechowywanym w tabeli __MigrationHistory (lub jeden zapisałem w pliku tekstowym).W jaki sposób są przechowywane skompresowane modele w Kodzie EF 4.3 Pierwsze migracje __MigrationHistory table created?

Istnieje metoda EdmMetadata.TryGetModelHash(), ale jest to oznaczone jako przestarzałe i chcę tego uniknąć, jeśli to możliwe (z powodów związanych z przyszłością).

Jak to zrobić w ramach EF 4.3?

Edit: Z trochę więcej badań i informacji w Pawel's answer Mam zorientowali się, że to pole nie przechowuje hash ale skompresowany binarną reprezentację modelu. To właśnie próbuję stworzyć.

Odpowiedz

8

__MigrationHistory Tabela nie zawiera już skrótu modelu. Zamiast tego zawiera teraz model w skompresowanej formie. Sprawdzanie, czy model zmienił się, czy nie, nie polega już tylko na porównywaniu wartości mieszania, ponieważ Migracje muszą "wiedzieć", co się zmieniło i jak to się zmieniło.

EdmMetadata była tabelą używaną przed integracją Migracji z Entity Framowork w wersji 4.3/5.0 i nie zostanie utworzona w bazach danych utworzonych przez EF 4.3+. Tutaj możesz znaleźć dodatkowe informacje: http://blog.oneunicorn.com/2012/01/13/ef-4-3-beta-1-what-happened-to-that-edmmetadata-table/

+0

Dzięki, zaraz po tym, jak to opublikowałem, zdałem sobie sprawę, że pole 'Model' faktycznie przechowywało dane binarne zamiast skrótu, więc to potwierdza moje podejrzenia. Jednak wciąż nie odpowiada na pytanie, w jaki sposób mogę * stworzyć * kompatybilną skompresowaną wersję mojego modelu - chociaż +1 daje kilka przydatnych informacji. –

+1

Dekompresowanie modelu za pomocą zip/gzip powinno dać plik edmx. – Pawel

+0

Więc w jaki sposób mogę to zrobić - o ile wiem, nie ma żadnych plików "edmx" w przypadku korzystania z podejścia Code First? –