EntityTypeBuilder 不包含 EF Core 中 ToTable 的定义

问题描述 投票:0回答:14

我有这个示例代码:

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 方法。在示例中,我检查了使用是什么,除了他正在使用的模型的类项目之外,示例中唯一的使用是 Microsoft.EntityFrameworkCore。这是改变了吗?我现在该怎么做?

entity-framework entity-framework-core
14个回答
305
投票

安装

Microsoft.EntityFrameworkCore.Relational
是正确的解决方案,正如 Ivan 所说。


31
投票

您应该添加 nuget 包

Microsoft.EntityFrameworkCore.SqlServer
,因为这是 Microsoft SQL 方法。


14
投票

我遇到了这个问题,但不需要安装:

Microsoft.EntityFrameworkCore.Relational

我只是退出 VS 2017 并重新打开我的解决方案。 我安装了以下 NuGet 软件包:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools

以及以下 CLI 工具参考:

Microsoft.EntityFrameworkCore.Tools.DotNet

14
投票

对于net core 3.1,需要安装这些包:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Relational

9
投票

Ivan 和 Mardoxx 是正确的。

我尝试安装

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. 我通过 nuget 升级了 Microsoft.EntityFrameworkCore
  2. 我确实安装了 Microsoft.EntityFrameworkCore.Tools,但它对
    ToTable
    不起作用,不知道是否需要这样做
  3. 然后我安装了
    Microsoft.EntityFrameworkCore.Relational
    ,现在解决了

8
投票

从 EF6 移植到 EFCore,我们遇到了这个问题。我们的原因是

.HasKey
现在返回
KeyBuilder
并且
.ToTable
不对其进行操作。所以逆转就有效了。

即。是:

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

成为:

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

7
投票

对于 EFCore 3.1,我需要在我的数据库上下文中使用它:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes())
        {
            entity.SetTableName("WS_" + entity.GetTableName());
        }
    }

不需要额外的 Nuget 包。


4
投票

对我来说,我的问题是我试图错误地调用 ToView() 。

我在做:

 modelBuilder.Query<Vendor>(entity =>
        {
            entity.Property(v => v.VendorId).HasColumnName("VendorID");
            entity.Property(v => v.Name).HasColumnName("Vendor Name");                
        }).ToView("vwVendors");

而不是:

modelBuilder.Query<Vendor>(entity =>
        {
            entity.ToView("vwVendors");
            entity.Property(v => v.VendorId).HasColumnName("VendorID");
            entity.Property(v => v.Name).HasColumnName("Vendor Name");                
        });

4
投票

确保在“默认项目”下拉列表中选择正确的项目,然后键入以下命令:

install-package microsoft.entityframeworkcore.sqlserver

3
投票

安装

  • Microsoft.EntityFrameworkCore
  • MicrosoftEntityFramworkCore.Tools
    ,最后
  • Microsoft.EntityFrameworkCore.SqlServer

1
投票

您的解决方案也可能存在版本差异,例如,如果您的依赖链中的一个项目具有

3.1
版本的
EF Core
,而另一个项目具有
2.1
,那么您也会看到这一点错误,无论你安装什么都不起作用,而是确保它们在整个解决方案中是相同的版本。


1
投票

取决于您使用的 .Net 版本。

Microsoft.EntityFrameworkCore.Tools.DotNet
仅支持 .NetStandard >= 2.0。

如果您的 .Net 版本是 4.6.1,请将

Microsoft.EntityFrameworkCore
更新到 2.0.0-preview1-final,以及相关的 EntityFramework DLL,然后关闭 Visual Studio 2017 并重新打开。


0
投票

请安装Microsoft.EntityFrameworkCore.Tools包 并写下:

builder.ToTable("tblName");

0
投票

我也遇到了同样的问题。

解决方案:对我来说安装

Microsoft.EntityFrameworkCore.Sqlserver
解决了问题。

附加信息: 我先安装了

Microsoft.EntityFrameworkCore.Tools
。但这并不能解决问题。因为这个包的目的不同。这个包执行以下操作 -

Enables these commonly used commands:
Add-Migration
Bundle-Migration
Drop-Database
Remove-Migration
Update-Database

检查此链接了解有关

Microsoft.EntityFrameworkCore.Tools

的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.