Ausgabe
dotnet new webapi
Ich habe mit .NET CLI ein leeres Projekt auf meinem Computer erstellt . Ich habe ApplicationDbContext
sowohl eine Verbindungszeichenfolge eingerichtet als auch appsettings.json
ein Modell erstellt, das ich in der Datenbank erstellen möchte.
Das Projekt wird erfolgreich erstellt und wenn der Befehl ausgeführt wird
dotnet ef migrations add InitialCreate
Es generiert den Migrations
Ordner mit dem darin enthaltenen Migrationsskript.
Das Problem tritt auf, wenn das Skript ausgeführt und die Datenbank mithilfe von aktualisiert wird, wobei dotnet ef database update
der folgende Fehler ausgegeben wird:
Entity Framework Core 6.0.6 hat „ApplicationDbContext“ mit dem Anbieter „Microsoft.EntityFrameworkCore.SqlServer:6.0.6“ mit Optionen initialisiert: Keine …
…
…
ClientConnectionId:#@#@#@@-#### -#### -@ ###-#@#@#@#@
Fehlernummer: 18456, Status: 1, Klasse: 14
Anmeldung für Benutzer „abc###\Guest“ fehlgeschlagen.
Ich bin mir nicht sicher, warum es diesen Fehler auslöst und wie er behoben werden kann.
appsettings.json
:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=BookClub;Trusted_Connection=True;"
}
}
BoockClub.csproj
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.123" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.6">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.6">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
</ItemGroup>
</Project>
ApplicationDbContext.cs
:
using BookClub.Models;
using Microsoft.EntityFrameworkCore;
namespace BookClub.Data;
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Category> Categories { get; set; }
}
CategoryController.cs
:
using BookClub.Data;
using Microsoft.AspNetCore.Mvc;
namespace BookClub.Controllers;
public class CategoryController : Controller
{
private readonly ApplicationDbContext _db;
public CategoryController(ApplicationDbContext db)
{
_db = db;
}
public IActionResult Index()
{
var categoryList = _db.Categories.ToList();
return View();
}
}
System:
- macOS 12.2.1
Anwendungen:
- VS-Code
- Docker – SQL-Server
- SQL Server-Erweiterung für VS Code
Lösung
Das Problem ist Ihre Verbindungszeichenfolge.
Trusted_Connection=True;
impliziert, dass sich Ihre App mit Windows-Anmeldeinformationen authentifiziert, was nicht funktioniert, es sei denn, Sie führen Windows in Docker mit allen erforderlichen Konfigurationen aus.
Sie müssen einen SQL-authentifizierten DB-Benutzer (mit Benutzername und Passwort) erstellen und dann die Verbindungszeichenfolge ändern
Alter Wert
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=BookClub;Trusted_Connection=True;"
}
Neuer Wert
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=BookClub;User Id=MyUsername;Password=MyPassword;"
}
Wenn Sie SQL Server Management Studio verwenden, verwenden Sie die folgenden Optionen, um den Benutzernamen und das Kennwort zu erstellen:
Beantwortet von – tinonetic
Antwort geprüft von – Marilyn (FixError Volunteer)