Ich bin neu in EF Core und versuche, es mit meinem ASP.NET Core-Projekt zum Laufen zu bringen.
Ich erhalte den obigen Fehler in meinem, startup.cs
wenn ich versuche, das DbContext
zu konfigurieren , um eine Verbindungszeichenfolge aus config zu verwenden. Ich folge diesem Tutorial: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
Der problematische Code in 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));
}
Die UseSqlServer
Methode wird erkannt, wenn ich sie direkt in den Kontext setze:
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");
}
Alle meine Online-Recherchen deuten auf fehlende Referenzen hin, aber ich kann anscheinend nicht herausfinden, welche mir fehlen ( siehe Bild ).
asp.net-core
entity-framework-core
Maxime Laflamme
quelle
quelle
Antworten:
Dies ist ein bekanntes Problem im Projektsystem. Siehe dotnet / project-system # 1741
quelle
Zuerst installieren wir das Microsoft.EntityFrameworkCore.SqlServer NuGet-Paket:
Dann nach dem Importieren des Namespace mit
Wir fügen den Datenbankkontext hinzu:
quelle
Hinzufügen
using Microsoft.EntityFrameworkCore;
manuell das Problem für mich gelöst
Fand das hier
Bearbeiten...
für dotnet core 3.1 hinzufügen
Microsoft.EntityFrameworkCore.SqlServer
quelle
Die Installation unter NuGet Package löst Ihr Problem
Microsoft.EntityFrameworkCore.SqlServer
quelle
Das Paket fehlt. Öffnen Sie die Package Manager-Konsole und führen Sie den folgenden Code aus:
quelle
Folgen Sie den unteren Schritten.
Installieren Sie Entity Framework Core Design und den SQL Server-Datenbankanbieter für Entity Framework Core:
Import Entity Framework Core:
Und konfigurieren Sie Ihren DbContext:
quelle
Ich habe Visual Studio Code verwendet.
1) Versuchen Sie, das Paket 'Microsoft.EntityFrameworkCore.SqlServer' zu installieren, indem Sie die Versionsnummer angeben.
VS-Code :
'dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'
Visual Studio: -
'Installationspaket Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'
Verweisen Sie auf den Link ' Paket' Microsoft.EntityFrameworkCore.SqlServer 'ist nicht kompatibel mit' allen 'Frameworks im Projekt ', um dies zu tun.
2) Fügen Sie dann den Namespace ' mit Microsoft.EntityFrameworkCore hinzu. 'manuell in der Datei Startup.cs.
Siehe den folgenden Link https://github.com/aspnet/EntityFramework/issues/7891 .
3) Wenn Sie ein Abhängigkeitsproblem für ' Microsoft.EntityFrameworkCore.SqlServer.Design' erhalten , z. B. "Paket ' Microsoft.EntityFrameworkCore.Design' ist nicht mit 'allen' Frameworks im Projekt kompatibel ", müssen Sie den folgenden Befehl ausführen:
VS-Code: -
dotnet add package Microsoft.EntityFrameworkCore.Design -v 1.1
Visual Studio
Installationspaket Microsoft.EntityFrameworkCore.Design -v 1.1
quelle
Projekt -> ManageNugetPackages -> Durchsuchen -> Suchen Sie nach "Microsoft.EntityFrameworkCore.SqlServer" und installieren oder aktualisieren Sie.
quelle
Wie in der Antwort von Win mit der höchsten Punktzahl erwähnt, müssen Sie möglicherweise das Microsoft.EntityFrameworkCore.SqlServer NuGet-Paket installieren. Beachten Sie jedoch, dass für diese Frage asp.net core mvc verwendet wird. In der neuesten Version von ASP.NET Core 2.1 hat MS ein sogenanntes Metapaket namens Microsoft.AspNetCore.App aufgenommen
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2
Sie können den Verweis darauf sehen, wenn Sie im Lösungs-Explorer mit der rechten Maustaste auf das ASP.NET Core MVC-Projekt klicken und auswählen
Edit Project File
Sie sollten dieses Metapaket sehen, wenn der ASP.NET-Kern die using-Anweisung webappt
<PackageReference Include="Microsoft.AspNetCore.App" />
Microsoft.EntityFrameworkCore.SqlServer ist in diesem Metapaket enthalten. In Ihrer Startup.cs müssen Sie möglicherweise nur Folgendes hinzufügen:
using Microsoft.EntityFrameworkCore;
quelle
Ich glaube, dies kann gelöst werden, indem ein Projektverweis auf Microsoft.EntityFrameworkCore.SqlServer.Design hinzugefügt wird
Microsoft.EntityFrameworkCore.SqlServer wurde nicht direkt in meinem Projekt installiert, aber das .Design-Paket installiert es trotzdem als Voraussetzung.
quelle
Bei mir trat dieses Problem mit Visual Studio Code auf und ich konnte es mit zwei Schritten beheben:
using Microsoft.EntityFrameworkCore;
dotnet build
im Terminal ausgeführt.quelle
Überprüfen Sie in Visual Studio den NuGet Package Manager => Pakete für Lösung verwalten , und überprüfen Sie alle diese Pakete, ob sie in Ihrer Lösung installiert wurden oder nicht, wie folgt:
Ich habe die gleichen Probleme gelöst, nachdem überprüft wurde, ob alle oben genannten Pakete installiert wurden.
quelle
Installieren Sie das Paket EntityFrameworkCore.SqlServer:
Nuget: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/
quelle
zuerst hinzufügen
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Fügen Sie als Nächstes Ihre CS-Datei hinzu
using Microsoft.EntityFrameworkCore;
Fügen Sie dies schließlich in Ihrem Kern hinzu
Startup.cs
quelle
. Ich denke, dies ist das Problem mit der Version von Sqlite. Ich hatte das gleiche Problem, als ich diese Versionen von SqLite verwendete
Version 2.2.4 :
Nachdem ich die Version hier überprüft hatte, änderte ich die Version, dann funktionierte es.
Kein Fehler nach dieser Verwendung
Version 2.1.2 :
quelle
Ich habe das einfach umgangen:
In
SqlServerDbContextOptionsExtensions
der Klasse in Frage ResolveSqlServerDbContextOptionsExtensions
Dies behebt das Problem, es muss standardmäßig eine Referenz fehlen.
quelle
Für alle, die immer noch dieses Problem haben: Verwenden Sie NuGet, um Folgendes zu installieren: Microsoft.EntityFrameworkCore.Proxies
Dieses Problem hängt mit der Verwendung von Castle Proxy mit EFCore zusammen.
quelle
Wow, so viele Antworten, noch keine erwähnte dieses Microsoft.EntityFrameworkCore.InMemory- Paket!
Fügen Sie den Verweis auf dieses Paket hinzu:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />
und Sie sollten bereit sein, loszulegen.quelle
Ich hatte dieses Problem, als ich zu Microsoft.EntityFrameworkCore.SqlServer v3.0.0 und Microsoft.EntityFrameworkCore.Tools v3.0.0 wechselte
Als ich in beiden Bibliotheken wieder auf Version 2.2.6 umgestiegen bin, ist der Fehler behoben. Dies ist eher eine Problemumgehung als eine Lösung, aber Sie werden so lange einsatzbereit sein, bis das Problem behoben ist.
quelle
Fehlermeldung:
Lösung:
Installieren von "microsoft.entityframeworkcore.sqlserver" mit NuGet
Fest :
PS: Stellen Sie sicher, dass Sie EF für den Inhalt "using Microsoft.EntityFrameworkCore" verwenden.
quelle
Stellen Sie für asp.net Core Version 2.1 sicher, dass Sie das folgende Paket hinzufügen, um das Problem zu beheben. (Zumindest behebt dies das Problem mit SQLite)
Hier ist die Referenz der Dokumentation unter Verwendung von SQLite mit Entity Framework Core. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
quelle
Ich hatte dieses Problem, anscheinend hatte ich die erforderlichen NuGet-Pakete nicht hinzugefügt, obwohl ich dachte, dass ich dies getan habe. Überprüfen Sie sie nacheinander.
quelle
Derzeit arbeitet mit Entity Framework Core 3.1.3. Keine der oben genannten Lösungen hat mein Problem behoben.
Die Installation des Pakets Microsoft.EntityFrameworkCore.Proxies in meinem Projekt hat das Problem jedoch behoben. Jetzt kann ich beim Festlegen meiner DBContext-Optionen auf den Methodenaufruf UseLazyLoadingProxies () zugreifen.
Hoffe das hilft jemandem. Siehe folgenden Artikel:
Lazy Loading im EF Core
quelle
Installationspaket:
Fügen Sie dann die Spitze Ihrer Klasse hinzu:
Das hat bei mir funktioniert
quelle
Ich musste die Leitung benutzen
in der ConfigureServices-Methode in der Datei Startup.cs
quelle
Das Kopieren des folgenden Codes in die TodoApi.csproj von https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi löste ein ähnliches Problem für mich.
Microsoft.AspNetCore.All ist möglicherweise übermäßig, enthält jedoch EntityFrameworkCore
quelle
Installieren Sie das NuGet-Paket
Microsoft.EntityFrameworkCore.SqlServer
, um dieses Problem zu beheben.Ich verwende Core Version 3.1
quelle