EntityTypeBuilder не содержит определения ToTable в EF Core

У меня есть этот пример кода:

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();
            }
        }
    }
}

Я тестировал пример с веб-сайта MS, но не могу найти метод ToTable. В этом примере я проверил, что такое Usings, и единственным, использующим этот пример, является Microsoft.EntityFrameworkCore в стороне от проекта класса для модели, которую он использовал. Это изменилось? Как мне это сделать сейчас?

Ответы

Ответ 1

Установка Microsoft.EntityFrameworkCore.Relational - правильное решение, как говорит Иван.

Ответ 2

Иван и Мардокс правы.

Я попытался просто установить Microsoft.EntityFrameworkCore.Tools затем получил эту ошибку:

Обнаружено понижение пакета: Microsoft.EntityFrameworkCore с 2.1.4 до 2.1.1. Ссылка на пакет прямо из проекта, чтобы выбрать другую версию. → Microsoft.EntityFrameworkCore.Tools 2.1.4 → Microsoft.EntityFrameworkCore.Design 2.1.4 → Microsoft.EntityFrameworkCore.Relational 2.1.4 → Microsoft.EntityFrameworkCore(> = 2.1.4) → Microsoft.EntityFrameworkCore(> = 2.1.1)

  1. Я обновил Microsoft.EntityFrameworkCore через Nuget
  2. Я установил Microsoft.EntityFrameworkCore.Tools, который не работал для ToTable, неизвестно, нужно ли это вообще
  3. Затем я установил Microsoft.EntityFrameworkCore.Relational и теперь он разрешается

Ответ 3

У меня была эта проблема, но не нужно было устанавливать:

Microsoft.EntityFrameworkCore.Relational

Я просто вышел из VS 2017 и снова открыл свое решение. У меня были установлены следующие пакеты NuGet:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools

И следующий справочник инструмента CLI:

Microsoft.EntityFrameworkCore.Tools.DotNet

Ответ 4

Перейдя с EF6 на EFCore, у нас была эта проблема. Наша причина была .HasKey теперь возвращает KeyBuilder и .ToTable не работает на нем. Так что вспять это сработало.

То есть. Был:

mp.HasKey(m => m.Id)
  .ToTable("Table")

стала:

mp.ToTable("Table")
  .HasKey(m => m.Id);

Ответ 5

нужно добавить пакет (nuget) Microsoft.EntityFrameworkCore.SqlServer так как это метод MS Sql

Ответ 6

В зависимости от используемой версии.Net Core. Microsoft.EntityFrameworkCore.Tools.DotNet поддерживает только.NetStandard> = 2.0.

Если ваша.Net Core версия 4.6.1, обновите Microsoft.EntityFrameworkCore до версии 2.0.0-preview1-final вместе со связанными с ней библиотеками EntityFramework, затем закройте Visual Studio 2017 и заново откройте.