J'ai cet exemple de code:
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();
}
}
}
}
Je testais des exemples du site Web MS, mais je ne trouve pas la méthode ToTable. Dans l'exemple, j'ai vérifié quelles étaient les utilisations et le seul exemple utilisé est Microsoft.EntityFrameworkCore en dehors du projet de classe du modèle utilisé. Cela a-t-il changé? Comment je fais ça maintenant?
Installer Microsoft.EntityFrameworkCore.Relational
est la bonne solution, comme le dit Ivan.
J'ai eu ce problème, mais je n'ai pas eu besoin d'installer:
Microsoft.EntityFrameworkCore.Relational
J'ai simplement quitté VS 2017 et rouvert ma solution ..__ Les packages NuGet suivants étaient installés:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Et la référence d'outil CLI suivante:
Microsoft.EntityFrameworkCore.Tools.DotNet
Ivan et Mardoxx ont raison.
J'ai essayé d'installer simplement Microsoft.EntityFrameworkCore.Tools
puis j'ai eu cette erreur:
Déclassement de paquet détecté: Microsoft.EntityFrameworkCore de 2.1.4 à 2.1.1. Référencez le package directement à partir du projet pour sélectionner une version différente. -> Microsoft.EntityFrameworkCore.Tools 2.1.4 -> Microsoft.EntityFrameworkCore.Design 2.1.4 -> Microsoft. 2.1.1)
ToTable
, sans savoir si cela est nécessaireMicrosoft.EntityFrameworkCore.Relational
et le problème est maintenant résolu.Porter de EF6 à EFCore, nous avons eu ce problème. Notre cause était .HasKey
renvoie maintenant une KeyBuilder
et le .ToTable
n'y fonctionne pas. Donc, inverser cela a fonctionné.
C'est à dire. Était:
mp.HasKey(m => m.Id)
.ToTable("Table")
Est devenu:
mp.ToTable("Table")
.HasKey(m => m.Id);
Selon votre version .Net Core que vous utilisez. Microsoft.EntityFrameworkCore.Tools.DotNet
prend uniquement en charge .NetStandard> = 2.0.
Si votre version .Net Core est 4.6.1, mettez à jour Microsoft.EntityFrameworkCore
vers 2.0.0-preview1-final, ainsi que les DLL EntityFramework associées, puis fermez Visual Studio 2017 et rouvrez-le.