[英]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文檔明確指出:
實體不能包含用於查詢類型的導航屬性。
因此對於映射,您必須將Step1
, Step2
, Step3
設為DbSet<>
因為Workflow1
是DbSet<>
或Entity Type類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.