Sorum şu: Ana Nesne nesnesi için Alt öğe nesnesini gerektirmeyen Anne-Baba nesneleri için olası bir Fluent NHibernate eşlemesi var mıdır? Referansı Ebeveyne nasıl eşleştireceğimi anlayamadım. Eşlemlerle oluşturulduğu gibi çağırdığımda, bir istisna alıyorum çünkü alt nesne (veri deposunda gerekli) gerekli yabancı anahtara sahip değil.Nesne özelliği olmadan Fluent NHibernate öğesinde yabancı anahtarı eşleştirin
İki POCO sınıfları:
public class Parent
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Child> Childs { get; set; }
}
public class Child
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual int ParentId { get; set; }
}
Ve bazı eşleştirmeler:
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
this.Table("Parents");
this.Id(x => x.Id);
this.Map(x => x.Name);
this.HasMany(x => x.Childs).KeyColumn("ChildId").Cascade.AllDeleteOrphan();
}
}
public class ChildMap : ClassMap<Child>
{
public ChildMap()
{
this.Table("Childs");
this.Id(x => x.Id);
this.Map(x => x.Name);
// Needs some sort of mapping back to the Parent for "Child.ParentId"
}
}
Ve yöntemi oluşturun: Bir Veli nesne oluşturmak mümkün olmak istiyorum
public Parent Create(Parent t)
{
using (this.session.BeginTransaction())
{
this.session.Save(t);
this.session.Transaction.Commit();
}
return t;
}
o Child nesnelerinin bir listesini içerir, ancak Child nesnelerinin Ana Babalarına (Ana Kimlikten başka) geri göndermeleri gerekmez. Bunu yapmak için bunu yapmak istiyorum. Bunu yapmak için, Parent'ten, Parent nesnesine geri dönen Childs listesindeki döngüsel başvuruyu önlemek için JSON serileştirmesiyle ilgili sorunlara neden olmak istiyorum.
Ebeveyn özelliğini ('Child') özel bir alana bir seçenekle eşleştiriyor mu? –
Yaptığım şey bu, bundan kaçınmaya çalışıyorum, çünkü "ParentId" özelliğindeki sorguları çalıştıramıyorum. Görünüşe göre, bir özelliği bir nesneye gerek duymadan bir sütuna yabancı anahtar kısıtlamasıyla eşleştirebilmem gerekiyor ... –
Orijinal soru söz konusu olduğunda, Felipe'nin cevabı doğru. Varlıkları doğrudan seri hale getirmeyin, önce bir DTO veya ViewModel'e dönüştürün, önce istediğiniz yapıyı elde edin. –