.NET Core Entity Framework выдает недопустимое имя объекта при доступе как сущность, но работает с SQL - PullRequest
0 голосов
/ 25 октября 2018

Я работаю с Entity Framework Core, v6.2.Я получаю сообщение об ошибке

SqlException: недопустимое имя объекта 'Cdef.CellDefinition'

при попытке доступа к DbSet напрямую, но с использованием того же DbContext объект, я могу запросить объект напрямую, используя команду FromSql.

Я видел другие ответы, в которых говорилось об изменении соглашений для удаления PluralizingTableNameConvention, однако, поскольку я делаю EntityFrameworkCore.DbContext, у ModelBuilder такой опции нет, и я не вижу никакихдоказательство того, что это попытка получить доступ к множественному имени.

Моя сущность настроена так:

[Table("Cdef.CellDefinition")]
public partial class CellDefinition
{
    [Key]
    public int Id { get; set; }
}

А моя DbContext имеет вид:

public class CDefContext : Microsoft.EntityFrameworkCore.DbContext
{
    public virtual Microsoft.EntityFrameworkCore.DbSet<CellDefinition> CellDefinition { get; set; }

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

Когда яПопытка получить доступ к объекту как к объекту напрямую, я получаю сообщение об ошибке:

Неверное имя объекта

, но если я выдаю SQL с тем же именем объекта, он работает правильно.

// This fails with Invalid Object Name
return cDefContext.CellDefinition.ToList();

// This succeeds
return cDefContext.CellDefinition.FromSql("select * from CDef.CellDefinition").ToList()

1 Ответ

0 голосов
/ 25 октября 2018

Я нашел решение.Вы не можете поместить схему в имя таблицы.

//This Does NOT work
[Table("Cdef.CellDefinition")]
public partial class CellDefinition{}


//But this DOES work
[Table("CellDefinition",Schema = "Cdef")]
public partial class CellDefinition{}
...