這裏是東西纏着我, 我有2個實體---「大師」和「奴隸」,讓我先列出來:實體框架流利API配置
public class Master
{
public Guid Id {get;set;}
public virtual ICollection<Slave> Slaves { get; set; }
public virtual Slave ParentSlave { get; set; }
}
class Slave
{
public Guid Id { get; set; }
public Guid ParentMasterId { get; set; }
public Master ParentMaster { get; set; }
public Guid? ChildMasterId { get; set; }
public Master ChildMaster { get; set; }
}
基本上,
- 主人有奴隸名單;
- 奴隸應屬於主(父母);
- 奴隸有另一個主人(孩子),然後可以有奴隸列表;
這裏談到相應的數據映射類,
class MasterDataMap : EntityTypeConfiguration<Master>
{
public MasterDataMap()
{
HasKey(i => i.Id);
HasOptional(o => o.ParentSlave).WithRequired(o=>o.ChildMaster);
ToTable("Master");
}
}
class SlaveDataMap : EntityTypeConfiguration<Slave>
{
public SlaveDataMap()
{
HasKey(i => i.Id);
HasRequired(o => o.ParentMaster).WithMany(m => m.Slaves).HasForeignKey(k=>k.ParentMasterId).WillCascadeOnDelete(true);
HasRequired(o => o.ChildMaster).WithOptional(d => d.ParentSlave);
ToTable("Slave");
}
}
這些2層的實體可以通過EF模型驗證沒有任何問題,和表可以成功地端至端測試期間被創建,運行以下後碼,
for (var idx = x; idx <= xx; idx++)
{
topMaster.Slaves.Add(new Slave
{
Id = Guid.NewGuid(),
ChildMaster = new Master
{
Id = Guid.NewGuid(),
}
});
}
topMaster和奴隸都被插入到表中,childmaster(S)也被插入,但他們並沒有與topMaster的奴僕相關,這意味着「childMaster」是NUL l和'ChildMasterId'是空的guid。
我不知道數據映射類導致此問題的問題。
請允許我澄清一點。它是EF 6.x,所以可以完成。源代碼可以毫無問題地編譯。它也可以從頭到尾運行。它也通過了EF的數據模型驗證。唯一的問題是'ChildMaster'和'Slave'之間的關聯無法建立。 – wxdtony
你有沒有嘗試上面的代碼。 – pjobs
我嘗試不將屬性應用於我的POCO,但如果找不到其他解決方案,我會嘗試使用它。 – wxdtony