11

Mam problemy z Visual Studio 2012, próbując dodać kontroler MVC4 z rusztowaniem. Idealnie chciałbym mieć model Entity Framework (edmx, itp.) Wygenerowany z bazy danych przy użyciu Add New Item - ADO.NET Entity Data Model (tj. Nie Code First) w osobnym zestawie z mojej aplikacji internetowej. Jednak po ustawieniu i użyciu Add Controller, określeniu "kontroler MVC z działaniami odczytu i zapisu i widoków, przy użyciu Entity Framework" i wybraniu klasy Model i klasy kontekstu danych z mojego zestawu DatabaseModel pojawia się następujący komunikat alertu.Rusztowanie MVC4 bazodanowego modelu Entity Framework w Visual Studio 2012

„Ifl.Payforit4.DatabaseModel.Mno” nie jest częścią określonego klasy „Ifl.Payforit4.DatabaseModel.Payforit4Entities” oraz klasie „Ifl.Payforit4.DatabaseModel.Payforit4Entities” nie może być zmodyfikowano, aby dodać właściwość "DbSet" do . (Na przykład, Class „Ifl.Payforit4.DatabaseModel.Payforit4Entities” może być skompilowany w zespole.)

Nie będąc w stanie zmodyfikować klasa ma sens, ponieważ jest w innym zespole, chociaż w tym samym rozwiązanie i automatycznie generowane przez T4, ale patrząc na automatycznie wygenerowany kod dla Payforit4Entities, właściwość "DbSet" jest już dość widoczna.

public DbSet<Mno> Mnoes { get; set; } 

Próbowałem kilka innych rzeczy.

  1. wprowadzenie modelu danych bezpośrednio w aplikacji internetowej
  2. zmieniającym klasę modelu do wielu innych tabel w bazie danych, w przypadku wystąpienia problemu z klasą MNO
  3. redukującego modelu danych po prostu pojedynczą, prostą tabelę przy użyciu Entity Framework Power Tools Beta 2 w celu inżynierii wstecznej modelu Code First. Spowodowało to nowy zestaw błędów. Rozumiem, dlaczego jest to wersja beta.
  4. zmieniając ADO.NET Data Model Code Generation strategii z Żaden domyślne stworzenie modelu danych w oparciu o ObjectContext zamiast DbContext
  5. Wyłączanie pluralizacji więc nazwa nieruchomość jest MNO zamiast Mnoes

None z nich zadziałało. Jedyną rzeczą, która zadziałała, było ręczne napisanie klasy pochodnej Code First DbContext i POCO. Przypadkowo każdy znaleziony przykład demonstrujący rusztowanie MVC4 używa tego rodzaju modelu danych. Czy jest coś, co mówi, że Code First jest jedynym rodzajem modelu danych, który działa z rusztowaniem MVC4? Czy ktoś zdołał najpierw zbudować bazę danych modelu bazy danych (.edmx) w Visual Studio 2012? Baza danych jest na tyle złożona, że ​​wolałabym trzymać się pierwszej strategii bazy danych.

Widzę, że musiałyby występować pewne różnice w rusztowaniach modeli Code First i Database First. Na przykład ta pierwsza ma właściwość POCO trzymającą klucz wskazany przez KeyAttribute, podczas gdy druga zawiera tę informację w plikach modelu edmx. Czy jest to uzasadnienie dla funkcji inżynierii odwrotnej w Entity Framework Power Tools? Czy odejdziemy od plików edmx do odwrotnych inżynierskich modeli Code First, aby użyć rusztowania MVC4? Jeśli tak, czy spodziewamy się, że będziemy używać projektów Dynamic Data, dopóki nie zostaną zakończone prace nad narzędziem Entity Framework Power Tools?

Odpowiedz

13

Sztuką jest najpierw skompilować swoje rozwiązanie, a następnie wpisać ręcznie klasę kontekstu ręcznie. Nie wybierz go z listy rozwijanej, wystarczy wpisać nazwę klasy przez siebie i będzie magicznie działać ;-)

Zobacz tutaj: ASP.NET MVC4– How to use a Database First EF in a MVC controller

+0

To działało świetnie i podpierało się do StackOverflow za podanie mi tego linku, kiedy wpisałem moje pytanie. –

+0

To samo tutaj, nie mogę uwierzyć, jak opóźnione jest to lol. – Dave

+1

Gdy próbuję tego, otrzymuję komunikat "Typ modelu jest nieprawidłowy. Wybierz element z listy." – JasonRed

0

nie sądzę możemy rusztowania z plików edmx z Entity Framework 5.

Próbowałem podobny zestaw rzeczy i wciąż uderzając błędów.

Istnieje kilka sugestii, że może po prostu usunięcie złego edmx i ponowne uruchomienie może wygenerować poprawne pliki .tt, aby umożliwić działanie rusztowania, ale jeszcze tego nie widziałem.

Mam zamiar spróbować jeszcze więcej, aby działało, ponieważ wolę podejście DB. Zaktualizuję tę odpowiedź, jeśli będę dalej.

+0

czy znalazłeś już rozwiązanie? ja też wolę db pierwsze podejście – daniel

+0

Nie, nie znalazłem żadnego przydatnego rozwiązania tego. Jak mówi poniżej alexb, nie jest on zbyt solidny, więc mam nadzieję, że poprawi się w aktualizacji –

+0

@zoidbergi: podobnie jak ty, mam wiele problemów związanych z rusztowaniem w moim projekcie mvc4 z EF5 db. Testowałem na podglądzie VS2013: ten sam projekt, ten sam kod działa dobrze. Dlatego tymczasowo pracuję na maszynie wirtualnej, aby bezpiecznie używać VS2013 i móc w razie potrzeby wrócić do VS2012. – JYL

0

Generator kodu edmx w Entity Frameork 5/VS 2012 jest wadliwy. Tworzy kod pełen błędów kompilatora. Domyślam się, że nie był on gotowy do wysyłki, gdy wydano wersję vs2012, dlatego ustawiono domyślną flagę generowania kodu na none.

Jedynym pytaniem dla Microsoft jest: kiedy możemy spodziewać się aktualizacji, która to naprawi?

-1

To prawda! Sztuką jest najpierw skompilować rozwiązanie, a następnie ręcznie wpisać klasę kontekstu. Nie wybieraj go z listy rozwijanej, po prostu wpisz nazwę klasy samodzielnie i będzie działać magicznie ;-)

dziękuję !! Marcus!

+0

Proszę nie kopiować i wklejać odpowiedzi, aby wyrazić swoją wdzięczność. –

Powiązane problemy