2011-07-28 12 views
45

Podążam za samouczkiem aplikacji sklepu muzycznego ASP.NET MVC 3, ale nadal utknęłam w części 4: http://www.asp.net/mvc/tutorials/mvc-music-store-part-4. To powtarza mi, że nie mam dostawcy danych SQL zainstalowane:Nie można znaleźć żądanego dostawcy danych .Net Framework. To może nie być zainstalowane. - postępując zgodnie z tutorialem mvc3 asp.net

Exact błąd:

System.ArgumentException was unhandled by user code 
    Message=Unable to find the requested .Net Framework Data Provider. It may not be installed. 
    Source=System.Data 
    StackTrace: 
     at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) 
     at System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name) 
     at System.Data.Entity.Internal.LazyInternalConnection.Initialize() 
     at System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel() 
     at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 
     at System.Data.Entity.Internal.InternalContext.Initialize() 
     at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
     at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
     at System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator() 
     at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() 
     at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
     at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
     at MusicApplication.Controllers.StoreController.Index() in C:\Users\Michelle\documents\visual studio 2010\Projects\MusicApplication\MusicApplication\Controllers\StoreController.cs:line 18 
     at lambda_method(Closure , ControllerBase , Object[]) 
     at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
     at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
     at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
    InnerException: 

Dodałem odniesienia do System.Data.SqlServerCe - wciąż mają ten sam błąd. Wszelkie wskazówki byłyby naprawdę mile widziane

+2

Chciałbym sprawdzić pisownię i upewnić się, że jest to 'System.Data.SqlServerCe.4.0'. Również http://www.microsoft.com/download/en/details.aspx?id=17876, jeśli go nie zainstalowałeś. – Buildstarted

+0

tak jest napisane poprawnie .. – michelle

+0

Czy próbowałeś ponownie zainstalować SQL Server CE? W przeszłości miałem wiele problemów, nawet naprawa nie zadziałała. Odinstaluj (zarówno wersje 32-, jak i 64-bitowe, jeśli korzystasz z 64-bitowego systemu operacyjnego) i zainstaluj ponownie. –

Odpowiedz

30

Byłem w stanie rozwiązać problem podobny do tego w Visual Studio 2010 przy użyciu NuGet.

przejdź do Narzędzia> Menedżer pakietów Biblioteka> Zarządzaj Nuget Pakiety do sporządzania roztworu ...

W oknie dialogowym wyszukiwania dla „EntityFramework.SqlServerCompact”. Znajdziesz pakiet z opisem "Zezwala na używanie SQL Server Compact 4.0 z Entity Framework." Zainstaluj ten pakiet.

Element podobny do poniższego zostanie wstawiony w Twojej web.config:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 
+1

to dokładnie to, czego mi brakowało, chociaż zainstalowałem pakiet ef.sqlservercompact, ale nie zaktualizowałem mojego web.config – andryuha

+0

to dokładnie ten sam proces, który podjąłem, aby uzyskać rozwiązanie do kompilacji dla samouczka Music Store – Purusartha

16

Miałem ten sam problem. Sprawdziłem wersję System.Data.SqlServerCe w C: \ Windows \ assembly. Był to 3.5.1.0. Więc zainstalowałem wersję 4.0.0 z poniższego linku (x86) i działa dobrze.

http://www.microsoft.com/download/en/details.aspx?id=17876

+1

Może być również konieczne dodanie " ' na 'komputer .config'. http://forum.linqpad.net/discussion/371/entity-framework-oracle-nable-to-find-the-requested-net-framework-data-provider-it-may-not-be – mbrownnyc

+1

@mbrownnyc Zbyt leniwy wykopać plik machine.config. Web.config był już otwarty i wkleiłem tam kod i zadziałało! Dzięki. Okazuje się, mam wiele zainstalowanych wersji SqlCE, więc nie musiałem instalować żadnych. – jokab

0

W moim przypadku problem został spowodowany przez błąd połączenia z bazą danych SQL. Właśnie odłączyłem, a następnie ponownie podłączyłem źródło danych SQL z widoku projektu. Jestem z powrotem uruchomiony. Mam nadzieję, że to działa dla wszystkich.

0

miałem problem similer z SqlClient na usługi WCF. Moje rozwiązanie było umieścić, że linie klienta app.config

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    </startup> 

Nadzieje to pomaga kogoś ..

10

Dodaj poniższe linie do pliku web.config:

<system.data> 
    <DbProviderFactories> 
       <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> 
    </DbProviderFactories> 
</system.data> 

zmienić dostawca z MySQL do SQL Server lub dowolnego dostawcy bazy danych, z którym się łączysz.

0

Stało się tak, ponieważ stworzyłem nowy projekt, który próbował uzyskać członkostwo w postaci System.Web.ProvidersDefaultMembershipProvider. Mój DB i aplikacja została skonfigurowana tak, aby używać zamiast tego System.Web.Security.SqlMembershipProvider. Musiałem zaktualizować dostawcę i ciąg połączenia (ponieważ ten dostawca wydaje się mieć dziwne wymagania dotyczące łańcucha połączeń), aby go uruchomić.

0

miałem to samo, gdy po MvcMusicStore Tutorial w części 4 i otrzymuje dany ciąg połączenia z tym:.

dodać name = "MusicStoreEntities" connectionString = "data source = \ SQLEXPRESS; Integrated Security = SSPI; database = MvcMusicStore; Identyfikator użytkownika = sa; hasło = " providerName =" System.Data.SqlClient "/>

To zadziałało dla mnie.

1

Błąd ten wynika przede wszystkim z architekturą procesora niezgodności z zainstalowanym ramowego ei x86 vs x64 Rozwiązanie: Idź do Solution Explorer> Właściwości projektu> Kompilacja kartę> Zaawansowane opcji kompilacji Nie trzeba zmienić CPU docelową z X64 do X86 Zapisz nowe ustawienie i przekompiluj swoje rozwiązanie. Wypróbowałem to i działało bardzo dobrze. Mam nadzieję, że to ci pomoże. Malek

Powiązane problemy