簡體   English   中英

沒有方法將 map 實體添加到實體框架核心中

[英]No method to map entity to table in entity framework core

我在一個普通的 .net 項目 4.7 版中使用實體框架核心。 我知道我能做到。 問題是我似乎無法將實體 map 添加到表中,因為“ToTable”方法不存在。 我無法編輯 poco 或實體類,因為它們是預定義和生成的。 所以我不能使用該屬性。 我在inte.net上看了看,好像大家都用這個方法把map一個實體轉表。

這是我的代碼:

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

我還嘗試將 IEntityTypeConfiguration 與 EntityTypeBuilder 一起使用,但它仍然無法訪問 map 表方法:

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

我查看了GitHub上的Entity Framework Core存儲庫,並在存儲庫中搜索了“Totable”方法。 事實證明它被定義為一個擴展方法,但它位於單獨的nuget包和庫中,名為Microsoft.EntityFrameworkCore.SqlServer

下載軟件包后,我得到了我需要的Totable方法。 當您已經具有可以直接在實體框架核心包中添加實體的“表”屬性時,將該方法添加到sql server的單獨包中仍然沒有意義。

您可以使用以下方法。 您必須使用Table數據注釋。

的DbContext:

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
    }

型號類:

[Table("Article")]
public class Article
{

您也可以在ToTable中使用ToTable,但您必須確保已using Microsoft.EntityFrameworkCore;

Line modelBuilder.Entity<TblIncident>().ToTable("Incident"); 根據文檔看起來是正確的。 https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables#fluent-api

這是非常老的線程,但我遇到了同樣的問題,我通過將base.OnModelCreating(builder)作為OnModelCreating方法的第一行來解決它。

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

    // Rest of the code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM