Ответ 1
Установка Microsoft.EntityFrameworkCore.Relational
- правильное решение, как говорит Иван.
У меня есть этот пример кода:
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 в стороне от проекта класса для модели, которую он использовал. Это изменилось? Как мне это сделать сейчас?
Установка Microsoft.EntityFrameworkCore.Relational
- правильное решение, как говорит Иван.
Иван и Мардокс правы.
Я попытался просто установить 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)
ToTable
, неизвестно, нужно ли это вообщеMicrosoft.EntityFrameworkCore.Relational
и теперь он разрешаетсяУ меня была эта проблема, но не нужно было устанавливать:
Microsoft.EntityFrameworkCore.Relational
Я просто вышел из VS 2017 и снова открыл свое решение. У меня были установлены следующие пакеты NuGet:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
И следующий справочник инструмента CLI:
Microsoft.EntityFrameworkCore.Tools.DotNet
Перейдя с EF6 на EFCore, у нас была эта проблема. Наша причина была .HasKey
теперь возвращает KeyBuilder
и .ToTable
не работает на нем. Так что вспять это сработало.
То есть. Был:
mp.HasKey(m => m.Id)
.ToTable("Table")
стала:
mp.ToTable("Table")
.HasKey(m => m.Id);
нужно добавить пакет (nuget) Microsoft.EntityFrameworkCore.SqlServer так как это метод MS Sql
В зависимости от используемой версии.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 и заново откройте.