EF Невозможно определить отношение, представленное свойством навигации - PullRequest
0 голосов
/ 10 декабря 2018

Когда я пытаюсь запустить этот код, я получаю исключение из EntityFramework, что невозможно определить отношение, представленное свойством навигации 'Workflow1.Step1' типа 'Step1'.Я попытался вслепую настроить его в OnModelCreating безуспешно, есть идеи, как решить эту проблему?

Код работает нормально, если я удаляю DbQuery, но я хочу его там, чтобы я мог запрашивать эти данные без включенияиз рабочего процесса, и при этом будьте уверены, что никакие изменения не вносятся непосредственно внутри шага.

public class Workflow1
{
        public Guid Id { get; private set; }

        public Guid Step1Id {get; private set;}
        public Step1 Step1 {get; private set;}

        public Guid Step2Id {get; private set;}
        public Step2 Step2 {get; private set;}

        public Guid Step3Id {get; private set;}
        public Step3 Step3 {get; private set;}
}

public class Workflow2
{
        public Guid Step2Id {get; private set;}
        public Step2 Step2 {get; private set;}

        public Guid Step4Id {get; private set;}
        public Step5 Step4 {get; private set;}
}

public class Step1 
{
    public Guid Id { get; private set; }
}

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) :base(options)
    {}

    public DbSet<Workflow1> Workflow1 { get; set; }
    public DbSet<Workflow2> Workflow2 { get; set; }

    public DbQuery<Step1> Step1 { get; set; }
    public DbQuery<Step3> Step2 { get; set; }
    public DbQuery<Step3> Step3 { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

1 Ответ

0 голосов
/ 10 декабря 2018

Код работает нормально, если я удаляю DbQuery, но я хочу его там, чтобы я мог запрашивать эти данные, не делая включения из рабочего процесса, и при этом быть уверенным, что никакие изменения не вносятся непосредственно в шаг.

Нет!Вы не можете сделать это, потому что в документации EF Core Query Type четко сказано, что:

Объекты не могут содержать свойства навигации для типов запросов.

Так что для сопоставлениявы должны сделать Step1, Step2, Step3 как DbSet<>, потому что Workflow1 равен DbSet<> или типу сущности.

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