2014-04-09 23 views
5

Właśnie zmieniłem moją aplikację z bazy danych najpierw na kod pierwszy! Co za świetna poprawa w rozmieszczaniu !. Ale teraz mam następujący problem. Wygenerowałem swój kodeks pierwszy z bazy danych, ale po odtworzeniu bazy danych z wygenerowanego kodu, moje widoki z mojej bazy danych są generowane jak tabele!Generowanie widoku SQL z kodu EF 6.1 najpierw

Jak wygenerować moje widoki z kodu? i/lub zmapować je do moich jednostek, jeśli muszę je wygenerować ręcznie?

EDYCJA.

Posta Luke'a McGregora z pewnością mnie zbliżyły. Tak, teraz generuje widoki. Ale migracje nie działają.

Podczas próby wykonania instrukcji Update-Database początkowe dane wyjściowe są takie, że nadal są zmiany kodu.

W związku z tym wykonałem polecenie Add-Migration xxx i ponownie uruchomiłem polecenie Update-Database.

EDIT 2:

Rozwiązywanie kilka różnic między moim kodu pierwszego kodu i widoku w kodzie SQL rozwiązać ten problem!

+0

Możliwy duplikat http://stackoverflow.com/questions/7461265/how-to -use-views-in-code-first-entity-framework –

+0

@CraigW. myślę, że to jest inne pytanie związane z tworzeniem, a nie z BAU –

+0

Druga połowa pytania dotyczy odwzorowania twoich jednostek na istniejące widoki (tj. "i/lub zmapować je do moich jednostek, jeśli muszę je wygenerować ręcznie?"), właśnie to będzie musiał zrobić. Nie potrafię nawet obliczyć, w jaki sposób generowanie widoków będzie generować kod, nadal potrzebuje tabeli za widokiem do przechowywania/pobierania danych. –

Odpowiedz

10

Trzeba będzie tworzyć ręczną migrację z jakiegoś surowego SQL w nim np coś wzdłuż linii poniżej

public partial class MyMigration: DbMigration 
{ 
    public override void Up() 
    { 
     Sql("CREATE VIEW......"); 
    } 
} 
+3

Użyj 'Sql (" EXEC ('CREATE View ....... "', aby uniknąć problemów z problemami "first in batch".) Nie można umieścić w migracji "GO", ponieważ nie jest to sql komenda – Colin

+0

LukeMcgregor, Z pewnością zbliżyłeś mnie do rozwiązania @Colin, dzięki za dodanie EXEC.Z pewnością działa to generowanie widoków dla mnie – spons

+0

To działa, zauważyłem kilka innych odpowiedzi na podobne pytania utworzyć DbContext i uruchom komenda update view zamiast wywoływać Sql(). Ma to niefortunny efekt uboczny faktycznego aktualizowania DB nawet przy wywołaniu aktualizacji-bazy danych -script – user2981639

Powiązane problemy