2011-11-29 5 views
1

EntityAEntityBproperty-ref 속성을 사용하고 cascade="none"ManyToOne와 관계가있다 "개체는 일시적인 저장되지 않은 경우이다." NH의 ManyToOne

는 NH 2.1에서, 나는 다음과 같은 코드를 사용 할 수 있었다 :

EnttiyA a = new EntityA(); 
a.EntityB = new EntityB(); 
a.EntityB.PropertyRef = 13; 
session.Save(a); 

을 그리고 그것이 마치 마법처럼 일했다. 내가 NH 3.2로 업그레이드 한 후
이제, 동일한 코드가 너무 잘 알고 나를을 제공 : 내가 잘못 뭐하는 거지

object is an unsaved transient instance - 
save the transient instance before merging: 

? 2.1과 3.2 사이의 ManyToOne 관계에 급격한 변화가 있습니까?

[업데이트] :

그냥 문제가 더 명확하게 - 나는 새로운 EntityB를 creat에 싶지 않다 , 나는 나의 새로운 EntityA가 PropertyRef 값이 기존 EntityB에 대한 참조를 갖고 싶어 13.

감사합니다.

답변

2

음, 2.1에서 작동하지 않아야합니다. 계단식 연결을 명시 적으로 해제 했으므로 절약 a은 저장을 트리거하지 않습니다. a.EntityBa은 지속될 수 없습니다. a을 저장하기 전에 session.Save(a.EntityB)으로 전화하거나 계단식 값을 적어도 save으로 변경하십시오.

+0

저장 순서는 플러시 전에 둘 다 저장되는 한 중요하지 않습니다. –

+0

아니요, 새로운 EntityB를 저장하고 싶지 않습니다. PropertyRef를 13으로 설정하고 싶습니다. – sternr

+0

하지만 _new_'EntityB'를 명시 적으로 생성하고 있습니다. 기존의 것을 사용하려면'session.Load (13)'을 사용하여로드하십시오. 관계가 property-ref를 사용하여 정의된다는 사실은 객체를 설정하는 방법을 변경하지 않습니다. – NOtherDev

관련 문제