부모 레코드에 대해 데이터베이스 (이 경우보기)를 쿼리하고 각 부모 레코드의 자식을 가져 와서 업데이트 한 다음 자식 레코드를 저장 한 다음 부모 레코드를 쿼리하는 메서드가 있습니다. . 하위와 상위 간에는 일대일 관계가 있지만 관계는 매핑 파일에 정의되어 있지 않습니다. 데이터베이스에 직접 select를 실행하여 업데이트가 데이터베이스에 저장되는 것을 볼 수 있지만 코드에서 두 번째 쿼리를 수행하면 업데이트가 결과에 포함되지 않습니다. 두 번째 쿼리가 업데이트를 반환하지 않는 이유는 무엇입니까? 코드의SaveOrUpdate가 업데이트를 반환하지 않은 후 FindAll
거친 개요 :
public void UpdateRecords(long aParentId)
{
IList<Parent> parents = parentRepository.GetParentById(aParentId);
foreach (Parent parent in parents)
{
Child childToUpdate = childRepository.GetChildById(parent.GetChildId());
... Update Child ...
childRepository.SaveChild(childToUpdate);
}
IList<Parent> parents = parentRepository.GetParentById(aParentId);
}
class ParentRepository : NHRepository
{
public IList<Parent> GetParentById(long anId)
{
DetachedCriteria criteria =
DetachedCriteria.For<Parent>()
.Add(Restrictions.Eq("Id", anId));
return FindAll(criteria).ToList();
}
}
class ChildRepository : NHRepository
{
public Child SaveChild(Child aChild)
{
Child savedChild = null;
using (UnitOfWork.Start())
{
savedChild = base.SaveOrUpdate(aChild);
UnitOfWork.Current.Flush(); // commit
}
return savedChild;
}
}
나도 몰라 무엇 findall은 방법 보이는 군. 나는 코뿔소에서 가져올거야. 명반. 면역 강화베이스. –
brainimus
세션을 지우십시오. 내 대답을 업데이트했습니다. –