web-dev-qa-db-ja.com

EntityTypeBuilderには、EF CoreのToTableの定義が含まれていません

私はこのサンプルコードを持っています:

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のWebサイトからいくつかの例をテストしていましたが、ToTableメソッドが見つかりません。この例では、Usingsが何であるかを確認しましたが、使用しているのは、使用しているモデルのクラスプロジェクト以外のMicrosoft.EntityFrameworkCoreだけです。これは変更されましたか?今これをどうやってやるの?

37
g_b

インストールMicrosoft.EntityFrameworkCore.Relationalは、Ivanが言うように正しい解決策です。

78
Mardoxx

IvanとMardoxxは正しいです。

Microsoft.EntityFrameworkCore.Toolsをインストールしようとしましたが、このエラーが発生しました:

パッケージのダウングレードが検出されました:2.1.4から2.1.1へのMicrosoft.EntityFrameworkCore。プロジェクトから直接パッケージを参照して、別のバージョンを選択します。 -> 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. Nuget経由でMicrosoft.EntityFrameworkCoreをアップグレードしました
  2. ToTableで動作しないMicrosoft.EntityFrameworkCore.Toolsをインストールしましたが、これが必要かどうか不明です
  3. その後、Microsoft.EntityFrameworkCore.Relationalをインストールしましたが、解決しました
6
Tom Stickel

この問題はありましたが、インストールする必要はありませんでした。

Microsoft.EntityFrameworkCore.Relational

VS 2017を終了して、ソリューションを再度開きました。次のNuGetパッケージをインストールしました。

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools

また、次のCLIツールリファレンス:

Microsoft.EntityFrameworkCore.Tools.DotNet
5
GreenyMcDuff

EF6からEFCoreに移植すると、この問題が発生しました。私たちの原因は.HasKeyKeyBuilderを返し、.ToTableが動作しないことでした。それで逆になりました。

すなわち。だった:

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

なりました:

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

これはMS Sqlメソッドなので、パッケージ(nuget)Microsoft.EntityFrameworkCore.SqlServerを追加する必要があります

0
Aaron

使用している.Net Coreバージョンに応じて。 Microsoft.EntityFrameworkCore.Tools.DotNetは、.NetStandard> = 2.0のみをサポートします。

.Net Coreバージョンが4.6.1の場合、Microsoft.EntityFrameworkCoreを2.0.0-preview1-finalに、関連するEntityFramework DLLとともに、Visual Studio 2017を閉じて再度開きます。

0
mcemmy