7

Zauważyłem, że ta dziwna rzecz się dzieje, być może to błąd, ale być może czegoś mi brakuje.EntityFramework.SqlServer nie został wdrożony w publikacji internetowej

Załóżmy, że masz rozwiązanie z dwoma projektami: jeden to projekt MVC3, inny to biblioteka klas do dostępu do danych (klasy modelu Entity Framework, kontekst danych i podobne).

Biblioteka klas odwołuje się do bibliotek EntityFramework (EF6) i EntityFramework.SqlServer.

Projekt MVC odwołuje się do tej biblioteki klasowej DAL. Biblioteka DAL może być używana przez jakiś inny kod poza aplikacją, aby oddzielić go od projektu WWW.

W każdym razie wydaje się, że po opublikowaniu projektu MVC3 proces pomija kopiowanie zespołu EntityFramework.SqlServer do katalogu publish/bin. Mimo to, biblioteka ta publikuje bazę wraz z innymi bibliotekami i samą biblioteką klas.

Czy istnieje sposób, aby wydawca opublikował również wymagany sterownik SqlServer?

Odpowiedz

16

W porządku, więc po dodatkowym Google-fu okazuje się, że obejście tego problemu polega na utworzeniu jakiegoś odniesienia do tego brakującego zespołu, nawet jeśli kod jest nieużywany.

.NET MVC 3 Deployment package missing references

I obejście Kiedyś to dodać prostą linię testową w konstruktorze kontekstu danych:

bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null; 
+1

Masz na myśli w pliku Content.tt? Czy to nie zostanie nadpisane za każdym razem, gdy dokonasz zmiany? – RichC

+1

Nie jestem pewien, dlaczego tak się dzieje, ale właśnie stworzyłem klasę wewnętrzną i umieściłem to oświadczenie w konstruktorze i naprawiłem problem. – Lereveme

+0

@RichC, nie jest to związane z TT. Powinienem dodać, że jest to poprawka tylko do Code-first – Crypton

3

miałem taką samą sytuację. Zainstalowałem EF w moim projekcie internetowym poprzez NuGet (nadal go tam nie używam, odwołuję się do bibliotek) i rozwiązuję mój problem.

Co więcej, nie mogę odtworzyć tej sytuacji dla innego rozwiązania - stworzyłem nowy projekt internetowy i odwołałem się do nowej biblioteki - ale prace wdrożeniowe.

1

Dodaj pakiet framework encji do pliku pakietu twojego projektu