Jestem nowy w EF Core i próbuję zmusić go do pracy z moim projektem ASP.NET Core.
Otrzymuję powyższy błąd startup.cs
podczas próby skonfigurowania parametrów DbContext
połączenia z config. Śledzę ten samouczek: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
Problematyczny kod w startup.cs
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;
namespace tracV2
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddSingleton<IConfiguration>(Configuration);
string conn = Configuration.GetConnectionString("optimumDB");
services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
}
UseSqlServer
Metoda jest rozpoznawany, jeśli umieścić go bezpośrednio w kontekście:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace tracV2.data
{
public class tracContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("myrealconnectionstring");
}
Wszystkie moje badania online wskazują na brakujące odniesienia, ale nie mogę się dowiedzieć, którego z nich mi brakuje ( patrz zdjęcie ).
asp.net-core
entity-framework-core
Maxime Laflamme
źródło
źródło
Odpowiedzi:
Jest to znany problem w systemie projektu. Zobacz dotnet / project-system # 1741
źródło
Najpierw instalujemy pakiet NuGet Microsoft.EntityFrameworkCore.SqlServer :
Następnie po zaimportowaniu przestrzeni nazw z
dodajemy kontekst bazy danych:
źródło
dodanie
using Microsoft.EntityFrameworkCore;
ręcznie rozwiązał problem za mnie
Znalazłem to tutaj
Edytować...
dla dotnet core 3.1 add
Microsoft.EntityFrameworkCore.SqlServer
źródło
Instalacja poniżej pakietu NuGet rozwiąże Twój problem
Microsoft.EntityFrameworkCore.SqlServer
źródło
Brakuje pakietu. Otwórz konsolę Menedżera pakietów i wykonaj poniższy kod:
źródło
Wykonaj poniższe kroki.
Zainstaluj Entity Framework Core Design i dostawcę bazy danych SQL Server dla Entity Framework Core:
Import Entity Framework Core:
I skonfiguruj swój DbContext:
źródło
Używałem Visual Studio Code.
1) Spróbuj zainstalować pakiet „Microsoft.EntityFrameworkCore.SqlServer”, podając numer wersji.
Kod VS :
„dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1”
Visual Studio: -
„Zainstaluj pakiet Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1”
Skorzystaj z linku „ Pakiet” Microsoft.EntityFrameworkCore.SqlServer ”jest niezgodny ze„ wszystkimi ”strukturami w projekcie , aby to zrobić.
2) Następnie dodaj przestrzeń nazw „ using Microsoft.EntityFrameworkCore; 'ręcznie w pliku Startup.cs.
Skorzystaj z poniższego łącza https://github.com/aspnet/EntityFramework/issues/7891 .
3) Jeśli wystąpi jakikolwiek problem z zależnościami dla „ Microsoft.EntityFrameworkCore.SqlServer.Design” , np. „Pakiet” Microsoft.EntityFrameworkCore.Design ”jest niezgodny ze„ wszystkimi ”frameworkami w projekcie ”, musimy uruchomić poniższe polecenie,
Kod VS: -
dotnet dodaj pakiet Microsoft.EntityFrameworkCore.Design -v 1.1
Visual Studio
Zainstaluj pakiet Microsoft.EntityFrameworkCore.Design -v 1.1
źródło
Projekt -> ManageNugetPackages -> Przeglądaj -> Wyszukaj „Microsoft.EntityFrameworkCore.SqlServer” i zainstaluj lub zaktualizuj.
źródło
Jak wspomniano w odpowiedzi udzielonej przez Win, która uzyskała najwyższą punktację, może być konieczne zainstalowanie pakietu Microsoft.EntityFrameworkCore.SqlServer NuGet, ale należy pamiętać, że to pytanie dotyczy asp.net core mvc. W najnowszym ASP.NET Core 2.1 MS zawarło tak zwany metapakiet o nazwie Microsoft.AspNetCore.App
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2
Możesz zobaczyć odwołanie do niego, klikając prawym przyciskiem myszy projekt ASP.NET Core MVC w eksploratorze rozwiązań i wybierając
Edit Project File
Powinieneś zobaczyć ten metapakiet, jeśli ASP.NET core webapps the using instrukcję
<PackageReference Include="Microsoft.AspNetCore.App" />
Ten metapakiet zawiera Microsoft.EntityFrameworkCore.SqlServer. Dlatego w swoim Startup.cs może być konieczne dodanie tylko:
using Microsoft.EntityFrameworkCore;
źródło
Uważam, że można to rozwiązać, dodając odwołanie do projektu do Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.SqlServer nie został bezpośrednio zainstalowany w moim projekcie, ale pakiet .Design i tak zainstaluje go jako warunek wstępny.
źródło
U mnie ten problem wystąpił z Visual Studio Code i udało mi się to naprawić w 2 krokach:
using Microsoft.EntityFrameworkCore;
dotnet build
w terminalu.źródło
W programie Visual Studio sprawdź Menedżera pakietów NuGet => Zarządzaj pakietami w poszukiwaniu rozwiązania , sprawdź wszystkie te pakiety, czy zostały zainstalowane w Twoim rozwiązaniu, czy nie, jak poniżej:
Rozwiązałem te same problemy po sprawdzeniu, że wszystkie powyższe pakiety zostały zainstalowane.
źródło
Zainstaluj pakiet, EntityFrameworkCore.SqlServer:
Nuget: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/
źródło
najpierw dodaj
Install-Package Microsoft.EntityFrameworkCore.SqlServer
następnie dodaj swój plik .cs
using Microsoft.EntityFrameworkCore;
na koniec dodaj to do swojego rdzenia
Startup.cs
źródło
. Myślę, że to jest problem z wersją Sqlite, miałem ten sam problem podczas korzystania z tej wersji SqLite
Wersja 2.2.4 :
Po sprawdzeniu wersji tutaj zmieniłem wersję i zadziałało.
Po użyciu tego nie ma błędu
Wersja 2.1.2 :
źródło
Obejrzałem to po prostu:
Dodaj
SqlServerDbContextOptionsExtensions
do danej klasy RozwiążSqlServerDbContextOptionsExtensions
To rozwiązuje problem, domyślnie musi brakować jakiegoś odniesienia.
źródło
Dla każdego, kto nadal ma ten problem: użyj NuGet, aby zainstalować: Microsoft.EntityFrameworkCore.Proxies
Ten problem jest związany z używaniem Castle Proxy z EFCore.
źródło
Wow, tak wiele odpowiedzi, ale żadna nie wspomniała o tym pakiecie Microsoft.EntityFrameworkCore.InMemory !
Dodaj odniesienie do tego pakietu:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />
i powinieneś być gotowy.źródło
Miałem ten problem, kiedy przeniosłem się do Microsoft.EntityFrameworkCore.SqlServer v3.0.0 i Microsoft.EntityFrameworkCore.Tools v3.0.0
Kiedy w obu bibliotekach wróciłem do wersji 2.2.6, błąd zniknął. Jest to raczej obejście niż rozwiązanie, ale pozwoli Ci zacząć działać, dopóki problem nie zostanie rozwiązany.
źródło
Komunikat o błędzie:
Rozwiązanie:
zainstaluj „microsoft.entityframeworkcore.sqlserver” z NuGet
Naprawiony :
PS: upewnij się, że korzystasz z EF na zawartości "using Microsoft.EntityFrameworkCore;"
źródło
W przypadku asp.net core w wersji 2.1 upewnij się, że dodano następujący pakiet, aby rozwiązać problem. (Przynajmniej to rozwiązuje problem za pomocą SQLite)
Oto odniesienie do dokumentacji używającej SQLite z rdzeniem struktury encji. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
źródło
Miałem ten problem, wygląda na to, że nie dodałem wymaganych pakietów NuGet, chociaż myślałem, że to zrobiłem, sprawdź je jeden po drugim.
źródło
Obecnie pracuję z Entity Framework Core 3.1.3. Żadne z powyższych rozwiązań nie rozwiązało mojego problemu.
Jednak zainstalowanie pakietu Microsoft.EntityFrameworkCore.Proxies w moim projekcie rozwiązało problem. Teraz mogę uzyskać dostęp do wywołania metody UseLazyLoadingProxies () podczas ustawiania opcji DBContext.
Mam nadzieję, że to komuś pomoże. Zobacz następujący artykuł:
Leniwe ładowanie w EF Core
źródło
Pakiet instalacyjny:
następnie dodaj szczyt swojej klasy:
to zadziałało dla mnie
źródło
Musiałem skorzystać z linii
w metodzie ConfigureServices w pliku Startup.cs
źródło
Skopiowanie następującego kodu do TodoApi.csproj z https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi rozwiązało podobny problem.
Microsoft.AspNetCore.All może być nadmierny, ale zawiera EntityFrameworkCore
źródło
Zainstaluj pakiet NuGet,
Microsoft.EntityFrameworkCore.SqlServer
aby rozwiązać ten problem.Używam wersji podstawowej 3.1
źródło