Нет метода для сопоставления сущности с таблицей в ядре инфраструктуры сущностей - PullRequest
0 голосов
/ 28 сентября 2018

Я использую ядро ​​Entity Framework в обычном .net проекте версии 4.7.Я знаю, что я могу сделать это.Проблема в том, что я не могу отобразить сущность в таблицу, потому что метод «ToTable» не существует.Я не могу редактировать классы poco или entity, потому что они предопределены и сгенерированы.Поэтому я не могу использовать атрибут.Я посмотрел в Интернете, и все, кажется, используют этот метод, чтобы отобразить сущность в таблицу.

Вот мой код:

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, ноон по-прежнему не имеет доступа к методу карты к таблице:

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

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я заглянул в репозиторий Entity Framework Core на GitHub и искал метод «Totable» внутри репозитория.Оказывается, он определен как метод расширения, но он находится в отдельном пакете nuget и библиотеке под названием Microsoft.EntityFrameworkCore.SqlServer

После того, как я скачал пакет, я получил нужный мне метод Totable.Тем не менее, нет смысла добавлять этот метод в отдельный пакет для сервера sql, если у вас уже есть атрибут «Таблица», который можно добавлять к сущностям непосредственно в базовом пакете платформы сущностей.

0 голосов
/ 28 сентября 2018

Вы можете использовать следующий подход.Вы должны использовать 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 в DBContext, но вы должны убедиться, что вы включили using Microsoft.EntityFrameworkCore;.

Линия modelBuilder.Entity<TblIncident>().ToTable("Incident"); выглядит правильно в соответствии с документацией.https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables#fluent-api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...