2010-07-13 3 views
0

자식 테이블에서 참조되는 부모 테이블의 데이터를 Asp.net의 자식 뷰에서 업데이트하려고합니다.Asp.net 및 유창한 nhibernate에서 자식의 부모 테이블을 업데이트하십시오.

Fluent Nhibernate를 사용하여 테이블을 매핑했습니다. 자식 테이블에서

는, 매핑은 다음과 같습니다

public class ChildMap: ClassMap<Child> 
{ 
    public ChildMap() 
    { 
     Id(i => i.childID).Not.Nullable(); 
     Map(i => i.childValue1); 
     Map(i => i.childValue2); 
     Map(i => i.childValue3); 
     References(i => i.parent, "parentID").Cascade.All(); 
    } 

부모 테이블의 매핑 : 내 컨트롤러에서

public class ParentMap: ClassMap<Parent> 
{ 
    public ParentMap() 
    { 
     Id(i => i.parentID).Not.Nullable(); 
     Map(i => i.parentValue1); 
     Map(i => i.parentValue2); 
     Map(i => i.parentValue3); 
     HasMany(i => i.Child).KeyColumn("childID").Cascade.All().Inverse(); 

    } 
} 

, 그것은 다음과 같습니다

...

[HttpPost] 
    public ActionResult Edit(int id, FormCollection collection) 
    { 

     try 
     { 
      using (var tr = UnitOfWork.CurrentUnitOfWork.BeginTransaction()) 
      { 
       try 
       { 

        var child= Registry.Childs.Get(id); 

        //This update works 
        UpdateModel(child, new[] { "childValue1", "childValue2", "childValue3" }, collection.ToValueProvider()); 

        //This update on the parent doesn't work 
        UpdateModel(child.parent, new[] { "child.parent.parentValue1", "child.parent.parentValue2", "child.parent.parentValue3" }, collection.ToValueProvider()); 

        tr.Commit(); 
       } 
       catch (Exception) 
       { 
        tr.Rollback(); 
        throw; 
       } 
      } 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

위의 코드를 사용하면 자식 테이블의 값을 업데이트하려고하면 작동합니다. 그러나 부모 테이블의 변경 내용을 저장하려고하면 작동하지 않습니다.

해결 방법에 대한 의견이 있으십니까?

감사합니다.

답변

0

좋아요. 나는 방금 내 질문에 대답했습니다. 기본적으로 부모의 테이블 이름을 추가하여 작동시킵니다.

UpdateModel(child.parent, "Parent", new[] { "child.parent.parentValue1", "child.parent.parentValue2", "child.parent.parentValue3" }, collection.ToValueProvider()); 

예!

관련 문제