簡體   English   中英

EF無法確定導航屬性表示的關系

[英]EF Unable to determine the relationship represented by navigation property

當我嘗試運行此代碼時,我從EntityFramework得到一個異常,即無法確定類型為“ Step1”的導航屬性“ Workflow1.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)
    {
    }
}

如果我刪除了DbQuery,但我希望在那兒執行該代碼,則它可以正常工作,因此我可以查詢該數據而無需從工作流程中執行“包含”,並且仍要確保沒有直接在該步驟內進行任何更改。

沒有! 您不能這樣做,因為EF Core Query Type文檔明確指出:

實體不能包含用於查詢類型的導航屬性。

因此對於映射,您必須將Step1Step2Step3設為DbSet<>因為Workflow1DbSet<>或Entity Type類型。

暫無
暫無

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

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