Ich habe diesen Beispielcode:
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Models;
namespace MySampleNamespace
{
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
new UserMap(modelBuilder.Entity<User>());
}
public class UserMap
{
public UserMap(EntityTypeBuilder<User> entityBuilder)
{
entityBuilder.ToTable("User");
entityBuilder.Property(s => s.Username).HasMaxLength(15).IsRequired();
}
}
}
}
Ich habe ein Beispiel von der MS-Website getestet, aber ich kann die ToTable-Methode nicht finden. Im Beispiel habe ich die Verwendungszwecke überprüft. Die einzige Verwendung des Beispiels war Microsoft.EntityFrameworkCore, abgesehen vom Klassenprojekt für das von ihm verwendete Modell. Wurde das geändert? Wie mache ich das jetzt?
RelationalEntityTypeBuilderExtensions
Klasse unter demMicrosoft.EntityFrameworkCore
Namespace in dieser Assembly definiert ist.Antworten:
Die Installation
Microsoft.EntityFrameworkCore.Relational
ist die richtige Lösung, wie Ivan sagt.quelle
Sie sollten das Nuget-Paket hinzufügen
Microsoft.EntityFrameworkCore.SqlServer
, da dies eine Microsoft SQL-Methode ist.quelle
Ich hatte dieses Problem, musste es aber nicht installieren:
Microsoft.EntityFrameworkCore.Relational
Ich habe VS 2017 einfach beendet und meine Lösung erneut geöffnet. Ich hatte die folgenden NuGet-Pakete installiert:
Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools
Und die folgende CLI-Tool-Referenz:
Microsoft.EntityFrameworkCore.Tools.DotNet
quelle
Ivan & Mardoxx sind richtig.
Ich habe versucht, nur zu installieren,
Microsoft.EntityFrameworkCore.Tools
dann bekam ich diesen Fehler:ToTable
hat. Unbekannt, ob dies überhaupt benötigt wirdMicrosoft.EntityFrameworkCore.Relational
und es wird jetzt aufgelöstquelle
Bei der Portierung von EF6 nach EFCore hatten wir dieses Problem. Unsere Sache war
.HasKey
jetzt Rückkehr einKeyBuilder
und das.ToTable
funktioniert nicht daran. Das hat also funktioniert.Dh. War:
mp.HasKey(m => m.Id) .ToTable("Table")
Wurde:
mp.ToTable("Table") .HasKey(m => m.Id);
quelle
Für Net Core 3.1 müssen folgende Pakete installiert werden:
Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Relational
quelle
Für EFCore 3.1 musste ich dies in meinem DB-Kontext verwenden:
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes()) { entity.SetTableName("WS_" + entity.GetTableName()); } }
Es war kein zusätzliches Nuget-Paket erforderlich.
quelle
Stellen Sie sicher, dass das richtige Projekt in der Dropdown-Liste "Standardprojekt" ausgewählt ist, und geben Sie den folgenden Befehl ein:
install-package microsoft.entityframeworkcore.sqlserver
quelle
Abhängig von Ihrer verwendeten .Net Core-Version.
Microsoft.EntityFrameworkCore.Tools.DotNet
unterstützt nur .NetStandard> = 2.0.Wenn Ihre .Net Core-Version 4.6.1 ist, aktualisieren Sie
Microsoft.EntityFrameworkCore
sie zusammen mit den zugehörigen EntityFramework-DLLs auf 2.0.0-Preview1-Final. Schließen Sie dann Visual Studio 2017 und öffnen Sie es erneut.quelle
Für mich war mein Problem, dass ich versucht habe, ToView () falsch aufzurufen.
Ich habe getan:
modelBuilder.Query<Vendor>(entity => { entity.Property(v => v.VendorId).HasColumnName("VendorID"); entity.Property(v => v.Name).HasColumnName("Vendor Name"); }).ToView("vwVendors");
anstatt:
modelBuilder.Query<Vendor>(entity => { entity.ToView("vwVendors"); entity.Property(v => v.VendorId).HasColumnName("VendorID"); entity.Property(v => v.Name).HasColumnName("Vendor Name"); });
quelle
Es ist auch möglich, dass Ihre Lösung Versionsunterschiede aufweist. Wenn beispielsweise eines der Projekte in Ihrer Abhängigkeitskette eine
3.1
Version vonEF Core
und ein anderes Projekt eine hat2.1
, wird dieser Fehler ebenfalls angezeigt, und unabhängig davon, was Sie installieren, hat er gewonnen funktionieren nicht, stellen Sie stattdessen sicher, dass sie in der gesamten Lösung dieselbe Version haben.quelle
Installieren
Microsoft.EntityFrameworkCore
,MicrosoftEntityFramworkCore.Tools
, und schlussendlichMicrosoft.EntityFrameworkCore.SqlServer
quelle