在实体框架核心中没有将实体映射到表的方法

Ale*_*ecu 2 .net c# entity-framework-core

我在一个普通的 .net 项目中使用实体框架核心,版本 4.7。我知道我可以做到这一点。问题是我似乎无法将实体映射到表,因为“ToTable”方法不存在。我无法编辑 poco 或实体类,因为它们是预定义和生成的。所以我不能使用该属性。我在互联网上查看,每个人似乎都使用这种方法将实体映射到表。

这是我的代码:

public class FactsDbContext : DbContext
{
    public DbSet<TblIncident> TblIncidents { get; set; }

    public DbSet<TblAction> TblActions { get; set; }

    public DbSet<TblAddressTypeAlias> TblAddressTypeAliases { get; set; }

    public DbSet<TblCountry> TblCountries { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //these methods don't exist in my case
        modelBuilder.Entity<TblIncident>(entity => entity.ToTable("Incident"));
        modelBuilder.Entity<TblIncident>().ToTable("Incident");
    }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试将 IEntityTypeConfiguration 与 EntityTypeBuilder 一起使用,但它仍然无法访问映射到表方法:

public class IncidentConfig : IEntityTypeConfiguration<TblIncident>
{
    public void Configure(EntityTypeBuilder<TblIncident> builder)
    {
        builder.ToTable("Incident");
    }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*ecu 5

我查看了 GitHub 上的 Entity Framework Core 存储库,并在存储库中搜索了“Totable”方法。事实证明它被定义为一个扩展方法,但它位于单独的 nuget 包和名为 Microsoft.EntityFrameworkCore.SqlServer 的库中

下载包后,我得到了我需要的 Totable 方法。当您已经拥有可以直接在实体框架核心包中添加实体的“表”属性时,将该方法添加到 sql server 的单独包中仍然没有意义。


viv*_*una 2

您可以使用以下方法。您必须使用Table数据注释。

数据库上下文:

public virtual DbSet<Article> Article { get; set; }

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

    modelBuilder.Entity<Article>(b =>
    {
        b.Property(e => e.Property1).HasDefaultValue(true);
        ... //Other properties
    }
Run Code Online (Sandbox Code Playgroud)

型号类别:

[Table("Article")]
public class Article
{
Run Code Online (Sandbox Code Playgroud)

您也可以ToTable在 DBContext 中使用 to,但必须确保已包含using Microsoft.EntityFrameworkCore;.

modelBuilder.Entity<TblIncident>().ToTable("Incident");根据文档, 线路看起来是正确的。https://learn.microsoft.com/en-us/ef/core/modeling/relational/tables# Fluent-api