2011-03-21 12 views
7

próbuję zrobić Entity Framework Code First programowania do istniejącą bazy .. ale ciągle widzę ten kod w moim SQL Profiler: -Dlaczego Entity Framework Code-First (z istniejącą bazą danych) nadal próbuje pobrać dane z tabeli EdmMetadata?

SELECT TOP (1) [Extent1].[Id]  AS [Id], 
        [Extent1].[ModelHash] AS [ModelHash] 
FROM  [dbo].[EdmMetadata] AS [Extent1] 
ORDER BY [Extent1].[Id] DESC 

Co to do cholery jest ta tabela EdmMetadata i dlaczego jest mój kod EF próbujący pobrać Id i ModelHash z tego miejsca?

Pamiętaj, że próbuję pracować przeciwko istniejącej DB.

Pozdrowienia :)

+0

Widziałem tę tabelę pokazać się w mojej stronie Dynamiczne Dane Podejście zaproponowane poniżej usunięto go. –

Odpowiedz

10

Nie istnieje kod-pierwszy przeciwko istniejącej bazie danych. Jeśli masz bazę danych, robisz Bazę danych - najpierw. W takim przypadku mapowanie jest prowadzone przez bazę danych.

Tabela EdmMetadata zawiera hasz aktualnego modelu pierwszego kodu i umożliwia wykrycie zmian modelu w celu umożliwienia odtworzenia bazy danych za pomocą DbContext. Ta funkcja jest domyślnie włączona. Można je wyłączyć poprzez usunięcie konwencję w OnModelCreating:

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
+9

"Nie istnieje kod-pierwszy przeciwko istniejącej bazie danych". er .. jesteś pewien? Zespół EF mówi inaczej: "* W tym przewodniku pokażemy najpierw kod generujący schemat bazy danych, ale te same zasady mają zastosowanie do mapowania do istniejącej bazy danych, z wyjątkiem" 7. * "http://blogs.msdn.com /b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx –

+1

Nie mówię, że płynne mapowanie nie działa z istniejącą bazą danych. Ma, ale nie jest to kod pierwszy. Kod pierwszy oznacza, że ​​najpierw tworzysz pocos, a mapowanie generuje z tych informacji. –

+2

To jest dla mnie pranie ... W swoim pierwszym stwierdzeniu (-1) byłeś zbyt semantyczny. Ale twoje drugie zdanie było na miejscu (+1) –

Powiązane problemy