0
아래는 내 부모 자식 관계 클래스 및 매퍼입니다. 우리는 프로젝트에서 Nhibernate 4.0.0.4000을 사용하고 있습니다. session.Merge (Parent)를 호출하여 Db에 삽입 할 새 자식 개체가있는 부모를 업데이트합니다. 자식 객체의 code_column에 Null 예외를 삽입 할 수 없습니다. 누군가 내 매퍼 코드의 어느 부분이 잘못되었는지 안내 할 수 있습니까?일대 다 관계 합성 키 문제 Nhibernate
Public class parent {
public virtual string Code { get; set; }
public virtual string Desc { get; set; }
public virtual IList<Child> Children{ get; set; }
public virtual int version {get;set;}
}
Public class Child {
public virtual parent ParentObj{ get; set; }
public virtual string Code1{ get; set; }
public virtual string Code2{ get; set; }
public virtual int version {get;set;}
}
public class ParentMap : ClassMap<Parent> {
public ParentMap() {
Table("Parent_Table");
LazyLoad();
OptimisticLock.Version();
Id(x => x.Code)
.Column("Code_Column")
.Index("Code_IDX1")
.Length(5)
.Unique()
.GeneratedBy.Assigned()
.Not.Nullable();
Version(x => x.Version)
.Column("VERS")
.UnsavedValue("0");
HasMany(x => x.Children)
.AsBag()
.KeyColumn("Code_Column")
.Inverse()
.LazyLoad()
.Cascade.All();
}
}
public class ChildMap: ClassMap<Child> {
public ChildMap() {
Table("Child_Table");
LazyLoad();
OptimisticLock.Version();
CompositeId()
.KeyReference(u => u.Code, "Code_Column")
.KeyProperty(u => u.Code1, "CODE1_column")
.KeyProperty(u => u.Code2, "CODE2_column");
Version(x => x.Version)
.Column("VERS")
.UnsavedValue("0");
}
}
런타임에 하위 개체가 해당 부모에 대한 올바른 null이 아닌 참조를 가지고 있습니까? –
Hello David, 요청 해 주셔서 감사합니다. 런타임에 올바르다. 이것은 게으른로드로 인해 session.merge 메소드에서 문제가 발생한 복합 ID입니다. 아래 기사에서는 문제와 해결 방법에 대해 설명합니다. 나는 복합 ID에 대해 별도의 클래스를 작성하여 똑같이 따라 갔다. http://nhibernate.info/blog/2010/06/30/nhibernate-and-composite-keys.html – Babu