트리 구조 모델 (복합 패턴 사용)이 있습니다.
그것의 클래스 다이어그램은 다음과 같이이다 : Fluent Nhibernate를 사용하여 간단한 트리를 유지
데이터베이스 다이어그램 : 나무의
및 샘플 :
나는 그것의 깊이가 더있다 CombatElement 트리를 지속 할 문제 상승 하나 이상의, 내가 그런 객체를 유지하려고 할 때, NHibernate는 1 레벨에있는 객체만을 저장하고 2 레벨 객체에 연결된 객체를 무시하므로 :
나는이 나무 작성하는 경우 :
CombatElement fe = new Formation() { Name = "Alpha Company" };
fe.Add(new Soldier()
{
Name = "Joe",
Rank = 1
});
fe.Add(new Soldier()
{
Name = "Jack",
Rank = 2
});
CombatElement platoon =
new Formation();
platoon.Name = "1st Platoon";
fe.Add(platoon);
platoon.Add(
new Soldier()
{
Name = "Adam",
Rank = 2
});
platoon.Add(
new Soldier()
{
Name = "Arthur",
Rank = 3
});
은 "조", "1 소대가"와 "잭은"데이터베이스와 "아서"와 "아담"으로 저장됩니다 1 소대의 subelemnts 있습니다 무시되고 저장되지 않을 것입니다 !!
public class CombatElementMap:ClassMap<CombatElement>
{
public CombatElementMap()
{
Id(x => x.Id).GeneratedBy.GuidComb();
Map(x => x.Name).Not.Nullable().Length(100);
}
}
///////////////////////////
public class FormationMap:ClassMap<Formation>
{
public FormationMap()
{
Id(x => x.Id).GeneratedBy.GuidComb();
HasMany(x => x.Elements).Cascade.AllDeleteOrphan();
}
}
: 여기
매핑 클래스입니다 ///////////////////////////public class SoldierMap:ClassMap<Soldier>
{
public SoldierMap()
{
Id(x => x.Id).GeneratedBy.GuidComb();
Map(x => x.Rank);
}
}
나는 형성 오브젝트를 캐스케이드,하지만 문제는 여전히 유지됩니다. 왜 이런 일이 발생합니까? 그것은 단지 나를 혼란스럽게했다!!
당신은 나의 구세주입니다. 저는 이것을 해결하기 위해 많은 시간을 할애했지만 아무런 문제가 없습니다. SqlServer의 데이터베이스 다이어그램도 변경되었습니다. 고마워. –
@HashemAboonajmi 환영합니다;) – MichaC
또한 AutoMapping으로이를 해결하려고했습니다. AutoMapper는 GetEumerator() 메서드를 엔터티로 취급하며이 메서드에 대한 불만에는 매핑 된 Id가 없습니다! 여기에 질문에 대한 링크가 있습니다 : http://stackoverflow.com/questions/19189185/automapping-a-composite-model-with-composite-iteration-with-fluentnhibernate이 문제에서도 저를 도울 수 있다면 감사하겠습니다. –