我有一個簡單的對象,可以是父組對象的子對象。複雜的是,父組可以是兩個「類型」(不是C#類型)中的一個,由enum屬性指示,每個子對象只能在每個類型中的一箇中。這可能會與類更有意義:在實體框架中設置相同對象之間的2個關係
public class Child
{
public string Value { get; set; }
public int? ParentGroup1Id{ get; set; }
public int? ParentGroup2Id { get; set; }
public ParentGroup ParentGroup1 { get; set; }
public ParentGroup ParentGroup2 { get; set; }
}
public class ParentGroup
{
public int Id { get; set; }
public string Name { get; set; }
public GroupType GroupType { get; set; }
public IList<Child> Children1 { get; set; }
public IList<Child> Children2 { get; set; }
}
我已經建立了針對兒童的EF地圖:
public class ChildMap : EntityTypeConfiguration<Child>
{
public ChildMap()
{
HasKey(t => t.Value);
HasOptional(c => c.ParentGroup1)
.WithMany(pg => pg.Children1)
.HasForeignKey(c => c.ParentGroup1Id);
HasOptional(c => c.ParentGroup2)
.WithMany(pg => pg.Children2)
.HasForeignKey(c => c.ParentGroup2Id);
}
}
在我的背景下,我已在DBSets兩個對象了:
public IDbSet<Child> Children { get; set; }
public IDbSet<ParentGroup> ParentGroups { get; set; }
當我去那個訪問數據庫的頁面時,我得到以下錯誤:
Additional information: Schema specified is not valid. Errors: The relationship 'ServiceLayer.Contexts.Child_ParentGroup' was not loaded because the type 'ServiceLayer.Contexts.ParentGroup' is not available.
順便說一句,一切都在ServiceLayer命名空間中。
我猜想,它不認爲這些是有效的關係,但我不夠好與EF知道如何設置這種關係。有沒有辦法讓這個工作,還是我必須完全改變它?