0

나는이 다음 클래스 :유창함 NHibernate에 저장되지 않습니다

public class PhoneModel 
{ 
    public virtual ModelIdentifier SupportModels 
} 
public class ModelIdentifier 
{ 
    public virtual string Name 
    public virtual IList<string> Values 
} 

이것은 내가 그것을 매핑하는 방법입니다

 mapping.Component(x => x.SuppoertedModel, y => 
     { 
     y.Map(x => x.Name, "FAMILY_ID"); 
     y.HasMany(x => x.Values).Element("VALUE").Table("SUPPORTEDMODULS") 
     } 

이 테이블을 만든 :

  1. PhoneModel 열을 " FAMILY_ID "
  2. SUPPORTEDMODELS 열 "VALUE", "PHONE_MODEL_ID"

문제는 그 값을 추가하고 때, 그것은 SUPPORTEDMODELS 테이블에 저장되지 것입니다 :

var pm = new PhoneModel(); 
pm.SupportedModels.Name = "11" 
pm.SupportedModels.Values.Add("34"); 
+0

"SupportModels", "SuppoertedModel", "SUPPORTEDMODULS"및 "SUPPORTEDMODELS"는 같은 테이블을 참조하기로되어 있습니다. –

+0

예, 실제 이름을 입력하고 싶지 않았습니다. :) –

답변

0
  • HasMany(x => x.Values).Cascade.AllDeleteOrphan()
  • 누락
  • 어쩌면은 Session.flush() 또는 transaction.Commit()는

BTW 테스트 코드에서 누락되었습니다 경우의 순서이 중요하지 않은 경우에는 NH가 일부 작업을 최적화 할 수 있고 SQL을 사용할 때 신뢰할 수없는 순서에 의존 할 수 없으므로 ICollection<string>HasMany().AsSet()으로 변경하십시오.