Здесь дело давало мне покоя, У меня есть 2 сущностей --- 'Мастер' и 'ведомых', позвольте мне перечислить их первый:Entity Framework Fluent конфигурации 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; }
}
В основном,
- Мастер имеет список Slaves;
- Раб должен принадлежать Учителю (Родитель);
- У раба есть еще один Учитель (Ребенок), который затем может иметь список рабов;
Здесь приходит соответствующие данные классов отображений,
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(),
}
});
}
ТопМастер и его ведомые были вставлены в таблицы, childmaster (ы) также был вставлен, но они не связаны с ТопМастер рабами, что означает «childMaster» являются NUL l и «ChildMasterId» являются пустыми.
Я не знаю, что не так с классами сопоставления данных, чтобы вызвать эту проблему.
Позвольте мне пояснить это немного. Это EF 6.x, так что это можно сделать. Исходный код может быть скомпилирован без каких-либо проблем. Он также может работать от начала до конца. Он также прошел проверку модели данных EF. Единственная проблема заключается в том, что связь между «ChildMaster» и «Slave» не может быть установлена. – wxdtony
Вы попробовали вышеуказанный код. – pjobs
Я стараюсь не применять атрибуты к моему POCO, но я попробую, если не найду другого решения. – wxdtony